1
내 프로그램을 컴파일하는 일련의 명령을 실행하고 싶습니다. 그러나 그것은 작동하지 않는 것 같습니다. 이것은 내가 예를 들어이 함께 명령 선언을 대체 할 다른 방법의 무리를 시도변수에 저장된 명령 실행
#!/bin/bash
task[0] = $(cd vssl/make/; make clean;)
compile[0] = $(make all)
error[0] = $(echo "We failed at vssl install")
task[1] = $(cd ../../web/make/; make clean;)
compile[1] = $(make install)
error[1] = $(echo "We failed at web install")
eval "$task[0]"
if (eval "$compile[0]"); then
eval "$task[1]"
if (eval "$compile[1]"); then
echo "ALL DONE"
else
eval "$error[1]"
fi
else
eval "$error[0]"
fi
내 스크립트입니다
task[0] = 'cd vssl/make/; make clean;'
이 단 하나 개의 오류 라인, 다른 라인 말 같은 오류 그러나 때마다 동일한 오류가 발생하는 경우가 발생합니다.
./install_everything.sh: line 4: task[0]: command not found
여기서 정확하게 무엇을하고 있습니까? 단순히이
#!/bin/bash
cd vssl/make/
make clean
if(make all); then
cd ../../web/make/
make clean
if(make install); then
echo "ALL DONE"
else
echo "We failed at web install"
fi
else
echo "We failed at vssl install"
fi
처럼 대신 변수의 실제 명령을 대체 시도 그리고 그것은 완벽했다. 그래서 저는 제 첫 번째 방법이 효과가없는 이유에 관해서는 꽤 난처한 처지입니다.
task[0] = $(cd vssl/make/; make clean;)
^^
오 와우, 정말 감사 일했다 : – Quillion
@Quillion은 쉘의 기본 구문입니다. 커맨드와 인자는 공백으로 구분되므로, 쉘이'var = value'를 보았을 때,'var' 명령어를 찾고, 두 개의 인자를 인자로 전달합니다. 변수 할당은'var = value'이어야합니다. 그것은 가독성을 상하게하지만 그것이 그 방법입니다. –