小编给大家分享一下shell字符串截取报错:Bad substitution怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
问题重现:
当前系统Ubuntu16
shell进行字符串截取
运行 ${GIT_COMMIT:0:6}报错:
/tmp/jenkins7505855461406722507.sh: 4: /tmp/jenkins7505855461406722507.sh: Bad substitution
原因:两种shell语言解释器 bash和dash
查看当前/bin/sh 指向哪种解释器:
ls /bin/sh -allrwxrwxrwx 1 root root 4 Mar 26 2018 /bin/sh -> dash
修改bin/sh指向为bash:
sudo ln -fs /bin/bash /bin/sh
或者运行 sudo dpkg-reconfigure dash
后选择NO
或者修改表达式 ${GIT_COMMIT:0:6}为:
$(echo $GIT_COMMIT | awk '{ string=substr($0,0,6); print string; }')
以上是“shell字符串截取报错:Bad substitution怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!