2011-11-03 12 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'コマンドを探して2つの引数を渡します。変数の代入は 'var = value'でなければなりません。読みやすさは痛いですが、それはそうです。 –

関連する問題