首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >回显带有变量的一行bash脚本

回显带有变量的一行bash脚本
EN

Stack Overflow用户
提问于 2013-05-30 06:45:58
回答 3查看 10.3K关注 0票数 2

我想这样做:

代码语言:javascript
运行
复制
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_${i}.txt"'

并通过管道将其发送到作业调度程序。

但是,这并不是用变量i的值替换它。取而代之的是,我得到了:

代码语言:javascript
运行
复制
#!/usr/bin/env bash
myprogram -i "input_${i}.txt"

我使用了echo的选项-e和单/双引号,但无法使其工作。例如,我得到了这个:

代码语言:javascript
运行
复制
i="1"; echo -e "#!/usr/bin/env bash\nmyprogram -i \"input_${i}.txt\""
-bash: !/usr/bin/env: event not found

我的bash版本是4.1.2。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-30 06:49:04

试试这个:

代码语言:javascript
运行
复制
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i '"\"input_${i}.txt\""

您可以同时echo单引号和双引号的字符串。

票数 6
EN

Stack Overflow用户

发布于 2013-05-30 07:21:00

也试着转义感叹号:

\!应该没问题,并且不会被bash读取为“事件”。

票数 0
EN

Stack Overflow用户

发布于 2013-05-30 08:29:23

代码语言:javascript
运行
复制
i="1"; echo -e '#!/usr/bin/env bash\nmyprogram -i "input_'"${i}"'.txt"'

基本上,在需要插入之前使用单引号,然后关闭单引号,打开双引号,添加内插,关闭双引号,重新打开单引号,然后完成字符串。在shell中,引号并不分隔单词;它们只是改变了位于引号之间的单词部分的解释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16825158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档