昨天刚刚写了一个系统优化的shell脚本,在进行测试的时候弹出Syntax error: "(" unexpected
报错,开始还以为是我写的脚本不够严谨,就换到另外一个Linux环境进行测试,结果又可以跑起来。
![执行shell脚本报错:Syntax error: "(" unexpected 图片[1]-执行shell脚本报错:Syntax error: "(" unexpected-不念博客](https://www.bunian.cn/wp-content/uploads/2022/12/image-344-181.png)
我检查一下shell版本,发现解析器是dash
,这个时候就怀疑是Linux的shell环境存在不兼容的情况,因为shell的不同版本解析器有sh,bash,dash......
等等,不兼容就会报错。
# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Dec 11 2020 /bin/sh -> dash
经查,在ubuntu和debian上,sh是/bin/dash的软链接,直接执行脚本是dash,Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash。
解决方法一
查看当前系统的shell使用什么版本,然后在脚本进行编辑,在首行添加一行来指定解析器。
#!/bin/bash
解决方法二
如果系统是Ubuntu/Debian
可以使用dpkg-reconfigure dash
这个命令来进行切换。
![执行shell脚本报错:Syntax error: "(" unexpected 图片[2]-执行shell脚本报错:Syntax error: "(" unexpected-不念博客](https://www.bunian.cn/wp-content/uploads/2022/12/image-344-182.png)
选择 NO
就可以,就可以再次执行命令测试。
© 版权声明
本站文章由不念博客原创,未经允许严禁转载!
THE END