最新消息:

运行shell脚本出现Bad Substitution错误

tools admin_ad 94浏览 0评论

通过sh xxx.sh运行某个shell脚本,发现出现Bad Substitution错误。

最终发现是shell脚本解释器的问题,我采用sh这个命令执行的脚本,对sh这个命令,查看其属性发现:
在这里插入图片描述
即最终指向的是dash这个解释器。而我们的shell脚本中,有一些数组操作,dash解释器不支持这些操作,而bash解释器支持这些操作,因此,我需要用bash解释器翻译我的shell脚本才行。

通过chmod +x xxx.sh ./xxx.sh
来执行我的shell脚本(此时使用的是bash解释器),此时发现没有了该错误。
总结:

遇到此类错误,不一定代表脚本内容有问题,很可能是用错了解释器。
参考:

Linux shell语言——dash和bash(可以把dash理解成轻量化的bash,并且现在Debian和Ubuntu中sh命令默认指向dash了,dash运行速度快,但比bash支持的语法和功能少一些,具体差异见该博客)
bash: Bad Substitution

转载请注明:VPS驿站 » 运行shell脚本出现Bad Substitution错误

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址