执行shell脚本报错:Syntax error: "(" unexpected

昨天刚刚写了一个系统优化的shell脚本,在进行测试的时候弹出Syntax error: "(" unexpected报错,开始还以为是我写的脚本不够严谨,就换到另外一个Linux环境进行测试,结果又可以跑起来。

图片[1]-执行shell脚本报错:Syntax error: "(" unexpected-不念博客

我检查一下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这个命令来进行切换。

图片[2]-执行shell脚本报错:Syntax error: "(" unexpected-不念博客

选择 NO 就可以,就可以再次执行命令测试。

© 版权声明
THE END