微信开发中 ACCESS TOKEN 过期失效的解决方案详解
1572
2022-11-10
syntax error near unexpected token `(‘ 异常解决
问题的发现
写代码的肯定少不了和 shell 接触,今天执行一个 shell 脚本时发现报错了,报错内容如下:
syntax error near unexpected token `('
脚本内容排查了很多遍都没有找到原因,执行的方式为 sh xx.sh
然后使用 source xx.sh 执行和 bash xx.sh执行都是 ok 的。
知识的了解
此时就需要了解 sh source bash 执行文件的区别。
首先看两张图
source 执行命令是直接执行命令,不创建子shellsh 创建子shell。子shell 里面的变量父shell 无法使用,对环境变量的修改也不影响父shell,但是父shell 里面的变量子shell 可以使用。子shell 执行完毕后,回到父shell,不会影响父shell 原本的环境
看完,这些好像和我们使用 sh 命令执行的报错并没有什么关系。
通过 wihch 命令查看 sh 命令可以发现,sh 只是 bash 的软链接,那为什么和 bash 执行结果有区别呢?
bash 执行时,如果 $0 是 sh ,则要求脚本内容遵循 POSIX (Portable Operating System Interface of UNIX,缩写为 POSIX )规范,当不符合规范的语法存在时,则会报错。 所以当我们使用 sh 执行时,并不是一个程序,而是一种标准(POSIX), 这种标准,在一定程度上保证了脚本的跨系统性(跨UNIX系统)。
解决问题
找到了问题的原因,我们就可以解决了 如果你仍要使用 sh 的方式执行,那么请在代码的第一行加上
set +o posix
命令,这条命令会关闭使用 POSIX 规范的检测。
关注我,随时获取最新文章
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~