Linux 从shell还是从shell脚本编写shell脚本?
它无法将命令作为命令执行,因为它不会保存到命令历史记录中 我必须稍微混淆一下hashbang才能让它通过吗 我试过这个:Linux 从shell还是从shell脚本编写shell脚本?,linux,bash,shell,unix,Linux,Bash,Shell,Unix,它无法将命令作为命令执行,因为它不会保存到命令历史记录中 我必须稍微混淆一下hashbang才能让它通过吗 我试过这个: [root@centos ~]# printf "#!/bin/sh\nsomething" -bash: !/bin/sh\nsomething": event not found (也尝试了相同效果的回声)在交互式shell中,用于历史替换。您可以使用\或将字符串置于单引号中对其进行转义: [root@centos ~]# printf "%s!/bin/sh\nsom
[root@centos ~]# printf "#!/bin/sh\nsomething"
-bash: !/bin/sh\nsomething": event not found
(也尝试了相同效果的回声)在交互式shell中,
代码>用于历史替换。您可以使用\
或将字符串置于单引号中对其进行转义:
[root@centos ~]# printf "%s!/bin/sh\nsomething" #
-bash: !/bin/sh\nsomething": event not found
请参阅bash的文档
如果您的实际应用程序在脚本中,这不会是一个问题,因为默认情况下脚本中不启用历史记录
如果您从未使用过历史扩展,可以通过以下方式禁用历史字符:
printf '#!/bin/sh\nsomething'
嗯。这是我发现的一个解决方法:
export histchars=
是的,一定是历史扩展弄乱了它(提到事件的错误是一条重要线索)
注意:我选择在我的脚本制作脚本中使用heredoc。逃逸的弦是地狱般的。哦,废话。这真的是历史替代造成的问题吗?嗯,这些新词似乎是用单引号引起来的,所以看起来不错。
[root@centos ~]# printf "#%s/bin/sh\nsomething" !
#!/bin/sh
something