シミュレーションを実行し、出力ファイルを別のディレクトリに保存するためのBashスクリプトを作成しようとしています。私が今までに持っているコードは、次のとおりです。コマンドを実行するためのBashスクリプト
mainDirCfg="/home/software/simplesim/simplesim-3.0/sim-outorder -config ../$1"
outFile="-redir:sim"
declare -a benchmark=("bzip2_base.i386-m32-gcc42-nn dryer.jpg" "equake_base.pisa_little <inp.in> inp.out")
declare -a directory=("bzip2" "equake")
i=0
for d in "${directory[@]}"
do
cd $d
cmdRun="$mainDirCfg $outFile $2 ${benchmark[$i]}"
# above is the command to be run
$cmdRun
cd ..
((i++))
done
上記のスクリプトは、2番目のものではなく最初の繰り返しで正しく動作します。ただし、コマンドプロンプトでコマンドを個別に実行すると、予想される出力が得られます。 2回目の繰り返しで実行するコマンドは、次のとおりです。
/home/software/simplesim/simplesim-3.0/sim-outorder -config ../tmp.cfg -redir:sim tmp9.out equake_base.pisa_little <inp.in> inp.out
私はbashスクリプトの初心者です。誰かが問題の原因を指摘できますか?ありがとう。彼らは、真ではないリダイレクトを引用しているかのよう${benchmark[1]}
であなたのリダイレクトは、コマンド引数として見られているので、
ここで/(どのように)カウンター(i)をインクリメントしていますか? –
最初の問題は、プログラムがどのように失敗するのか説明できないことです。もう1つは通知されたスクリプトを通知なしに変更したことです。 – jlliagre
私はそれについて残念です。プログラムは、終了しないという意味で2回目の反復で失敗します。 '$ cmdRun'はスタックされた行です。 – titan