首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从shell编写shell脚本,还是从shell脚本编写shell脚本?

从shell编写shell脚本,还是从shell脚本编写shell脚本?
EN

Stack Overflow用户
提问于 2013-07-26 03:32:48
回答 2查看 64关注 0票数 1
代码语言:javascript
复制
[root@centos ~]# printf "#!/bin/sh\nsomething"
-bash: !/bin/sh\nsomething": event not found

它无法将命令作为命令执行,因为它没有保存到命令历史记录中。

我必须稍微混淆一下杂技,这样它才能让我通过?

我试过这个:

代码语言:javascript
复制
[root@centos ~]# printf "%s!/bin/sh\nsomething" #
-bash: !/bin/sh\nsomething": event not found

(也尝试了echo的同样效果)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 03:36:37

在交互式shell中,!用于历史替换。您可以使用\或将字符串放在单引号中转义:

代码语言:javascript
复制
printf '#!/bin/sh\nsomething'

请参阅bash 历史扩展的文档。

如果您的实际应用程序将在脚本中,这将不是一个问题,因为在脚本中默认不启用历史记录。

如果您从未使用过历史扩展,则可以使用以下方法禁用历史字符:

代码语言:javascript
复制
export histchars=
票数 3
EN

Stack Overflow用户

发布于 2013-07-26 03:37:29

井。这是我找到的一个解决办法:

代码语言:javascript
复制
[root@centos ~]# printf "#%s/bin/sh\nsomething" !
#!/bin/sh
something

是的,必须是历史扩展才会扰乱它(提到event的错误是一个很大的线索)。

注意:我选择在我的脚本制作脚本中使用一个本地文档。转义字符串是可怕的。

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

https://stackoverflow.com/questions/17872463

复制
相关文章

相似问题

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