使用变量回送一行程序bash脚本
我想这样做:使用变量回送一行程序bash脚本,bash,echo,Bash,Echo,我想这样做: i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"' 并将其传送到作业调度程序 但是,这不会用变量i的值替换变量i。相反,我得到的是: #!/usr/bin/env bash myprogram -i "input_${i}.txt" 我玩了一点echo的选项-e和单/双引号,但无法使其工作。例如,我得到了这个: i="1"; echo -e "#!/usr/bin/env bash\nmypro
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"'
并将其传送到作业调度程序
但是,这不会用变量i的值替换变量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。试试这个:
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i '"\"input_${i}.txt\""
您可以同时回显单引号和双引号字符串。也可以尝试转义感叹号:
\代码>应该可以,并且不会被bash作为“事件”读取
基本上,使用单引号直到需要插值,然后关闭单引号,打开双引号,添加插值,关闭双引号,重新打开单引号,并完成字符串。在shell中,引号不能界定一个单词;他们只是改变了一个词在他们之间的部分的解释
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_'"${i}"'.txt"'