2013-05-29 86 views
0

一個班輪bash腳本我想這樣做:回聲變量

i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"' 

和管道到一個作業調度程序。

但是,這並不能代替變量i的值。相反,我得到這個:

#!/usr/bin/env bash 
myprogram -i "input_${i}.txt" 

我玩了一下選項-e的echo和單/雙引號,但不能使它的工作。例如,我得到這個:

i="1"; echo -e "#!/usr/bin/env bash\nmyprogram -i \"input_${i}.txt\"" 
-bash: !/usr/bin/env: event not found 

我的bash版本是4.1.2。

回答

3

試試這個:

i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i '"\"input_${i}.txt\"" 

您可以在同一時間echo單,雙引號的字符串。

0

嘗試也逃脫感嘆號:

\!應該沒問題,而且不會被解讀爲「事件」的慶典。

0
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_'"${i}"'.txt"' 

基本上,使用單引號,直到你需要進行插值,然後關閉單引號,打開雙引號,加插值,關閉雙引號,重新打開單引號,並完成該字符串。在shell中,引號不會分隔一個單詞;他們只是改變對落在他們之間的詞的部分的解釋。