我想这样做:
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。
答案 0 :(得分:4)
试试这个:
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i '"\"input_${i}.txt\""
您可以同时echo
单引号和双引号。
答案 1 :(得分:0)
尝试转义感叹号:
\!
应该没问题,不会被bash读作“事件”。
答案 2 :(得分:0)
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_'"${i}"'.txt"'
基本上,使用单引号,直到需要插值,然后关闭单引号,打开双引号,添加插值,关闭双引号,重新打开单引号,并完成字符串。在shell中,引号不分隔单词;他们只是改变了对他们之间的一个词的部分的解释。