shell脚本执行无结果回显事件

文章讨论了在Linux环境下,一些命令在命令行可以执行但在shell脚本中失去回显的现象。作者尝试了更改解释器、使用引号以及检查变量引用等方法,并发现问题可能在于bash的内置命令与外部命令的差异。通过启用history指令,解决了脚本中无回显的问题。此问题在不同系统上可能表现不一,提示读者遇到类似问题时可以尝试检查并启用相关指令。
摘要由CSDN通过智能技术生成

目录
  疑问
  检查
  解决


疑问
  有些指令在Linux命令行中明明可以直接执行,为什么但写入shell脚本中却没有回显呢?

  正常情况应该是可以在命令行执行的指令,在shell脚本中用``(返单引号)囊括起来便可执行,如下图
请添加图片描述
  非正常情况,命令行可执行,shell脚本中执行无回显,如下图
请添加图片描述
请添加图片描述

据我所搜索到的或请教他人所获得的方法如下几点:
1、尝试更改解释器(即shell里第一行),如:#!/bin/bash、#!/bin/sh
2、引号囊括执行才可执行
3、变量引用是否正确

当然若以上各点能解决各位问题,那么可无需往下看了,但博主遇到的问题却没有就此解决~

检查
  在Linux中有外部命令和内置命令的区分,具体内容可到文章底部附录查看。区分方法:通过which指令,回显结果为no的都是bash内置命令

请添加图片描述
  通过在脚本添加以下指令,查看解析器是否启用history指令

set -o | grep history

  可以看出无论哪个解析器都没有启用
请添加图片描述

解决
  通过在脚本添加以下指令,为解析器启用history指令

HISTFILE=~/.bash_history
set -o history

  这样c.sh执行结果将会有回显,具体对比如下图
请添加图片描述

总结

  若读者有遇到相同情况,可以将history改为其他指令,先检查后解决。

  同样的脚本,在其他人系统上可能是没有问题的,题主使用的是centos7,也有群友使用centos7可以成功执行脚本,目前也不清楚是什么原因。

附录-参考文章

bash内置命令:https://blog.csdn.net/woshaguayi/article/details/89389527

理解Linux内置命令与外部命令:https://blog.csdn.net/hidengxin/article/details/84708090

history命令在脚本里面执行不成功解决方案:https://blog.csdn.net/weixin_44316575/article/details/89817537

感谢各位耐心阅读,一位希望成为有知识输出的,而不是乱搬粗造的底层程序猿
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值