簡體   English   中英

運行命令的Bash腳本

[英]Bash Script for running commands

我正在嘗試編寫一個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

上面的腳本可以在第一次迭代中正常運行,而不能在第二次迭代中正常運行。 但是,在命令提示符下分別運行命令時,我得到了預期的輸出。 我為第二次迭代運行的命令如下:

/home/software/simplesim/simplesim-3.0/sim-outorder -config ../tmp.cfg -redir:sim tmp9.out equake_base.pisa_little <inp.in> inp.out

我是bash腳本的新手。 有人可以指出是什么問題嗎? 謝謝。

更改

cmdRun="$mainDirCfg $outFile $2 ${benchmark[$i]}"
$cmdRun

eval "$mainDirCfg $outFile $2 ${benchmark[$i]}"

這是因為您在${benchmark[1]}中的重定向被視為命令參數,就像被引用一樣,而不是真正的重定向。 您的第二個程序不會終止,因為它會永遠等待從stdin中讀取某些內容,由於重定向不起作用,您必須鍵入一些內容(鍵入Ctrl-D關閉stdin,腳本將繼續)。

PS:請記住, 評估是邪惡的 ,應該避免。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM