$sh my_script.sh
Syntax error: "(" unexpected (expecting "done")
通过网上查阅资料,发现sh默认是指向dash的:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 23 2022 /bin/sh -> dash
原来Ubuntu安装时默认使用dash,sh运行shell脚本会指向在dash下运行因dash的兼容可能会有问题,但用bash来运行是不报错的。
$bash my_script.sh
长期解决该问题就是重新配置dash:
sudo dpkg-reconfigure dash
弹出重新配置dash界面,并选择“no”而弃用dash。