2011-11-03 3 views
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;) 
    ^^ 

답변

3

은 공간을 제거합니다. 공간과 공간의 차이점은 무엇입니까?
+0

오 와우, 정말 감사 일했다 : – Quillion

+1

@Quillion은 쉘의 기본 구문입니다. 커맨드와 인자는 공백으로 구분되므로, 쉘이'var = value'를 보았을 때,'var' 명령어를 찾고, 두 개의 인자를 인자로 전달합니다. 변수 할당은'var = value'이어야합니다. 그것은 가독성을 상하게하지만 그것이 그 방법입니다. –

관련 문제