我想这样做:
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"'并通过管道将其发送到作业调度程序。
但是,这并不是用变量i的值替换它。取而代之的是,我得到了:
#!/usr/bin/env bash
myprogram -i "input_${i}.txt"我使用了echo的选项-e和单/双引号,但无法使其工作。例如,我得到了这个:
i="1"; echo -e "#!/usr/bin/env bash\nmyprogram -i \"input_${i}.txt\""
-bash: !/usr/bin/env: event not found我的bash版本是4.1.2。
发布于 2013-05-30 06:49:04
试试这个:
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i '"\"input_${i}.txt\""您可以同时echo单引号和双引号的字符串。
发布于 2013-05-30 07:21:00
也试着转义感叹号:
\!应该没问题,并且不会被bash读取为“事件”。
发布于 2013-05-30 08:29:23
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_'"${i}"'.txt"'基本上,在需要插入之前使用单引号,然后关闭单引号,打开双引号,添加内插,关闭双引号,重新打开单引号,然后完成字符串。在shell中,引号并不分隔单词;它们只是改变了位于引号之间的单词部分的解释。
https://stackoverflow.com/questions/16825158
复制相似问题