shell脚本执行无结果回显事件
本帖最后由 忧花殇倾城泪 于 2024-11-22 15:25 编辑疑问
有些指令在Linux命令行中明明可以直接执行,为什么但写入shell脚本中却没有回显呢?
正常情况应该是可以在命令行执行的指令,在shell脚本中用``(返单引号)囊括起来便可执行,如下图
非正常情况,命令行可执行,shell脚本中执行无回显,如下图
检查
在Linux中有外部命令和内置命令的区分,区分方法:通过which指令,回显结果为no的都是bash内置命令
通过在脚本添加以下指令,查看解析器是否启用history指令
set -o | grep history
可以看出无论哪个解析器都没有启用
解决
通过在脚本添加以下指令,为解析器启用history指令
HISTFILE=~/.bash_historyset -o history
这样c.sh执行结果将会有回显,具体对比如下图
总结
若读者有遇到相同情况,可以将history改为其他指令,先检查后解决。同样的脚本,在其他人系统上可能是没有问题的,题主使用的是centos7,也有群友使用centos7可以成功执行脚本,目前也不清楚是什么原因。 感谢分享 感谢分享 https://unix.stackexchange.com/questions/5684/history-command-inside-bash-script
说得挺好的,history是shell built-in,会记录在history文件里. noninteractive shell里自然用不了
{:1_918:} 感谢分享 history是在交互式shell种获取上下文指令,但是脚本执行的时候不会记录脚本执行期间的历史记录,所以直接用history打印结果是空的
页:
[1]