本文主要是介绍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
执行命令是直接执行命令,不创建子shell
sh
创建子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
规范的检测。
关注我,随时获取最新文章
这篇关于syntax error near unexpected token `(‘ 异常解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!