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