【Shell】sh执行脚本报错Syntax error: “(“ unexpected

问题:

sh脚本中有数组初始化的内容

$ str="123 456 789"
$ array=($str)
$ echo ${array[2]}

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

原因:

其他常见的linux发行版,虽然很多是将sh指向bash

debian/ubuntu上sh命令默认是指向dash,而不是bash

又因为dash是比bash还轻量的,只支持基本的shell功能, 

其中不包括刚才那种数组初始化,所以才会识别不了,直接报Syntx error

解决:

 解决办法是,直接用 bash test.sh,或者./test.sh,这两种方式来执行脚本。


执行sh ./xxx.sh出现:“Syntax error: “(” unexpected”的解决方法

 昨天更新了Virtualmin的系统识别部分,目的是让它能支持Debian系统下的一键安装和优化,代码修改了差不多,将VPS重新安装为Debian,通过sh ./virtualmin.sh执行代码就报“Syntax error: “(” unexpected”错误,通过bash ./virtualmin.sh执行就没问题。几经查找语法,没有问题,后来在网上找到问题原因:
        代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。

解决:

1) sudo dpkg-reconfigure dash       在选择项中选No,搞定了!

2)在root下面执行 dpkg-reconfigure dash, 选择 no

zxl@ubuntu:~/package$ su
Password:
root@ubuntu:/home/zxl/package# dpkg-reconfigure dash

【Shell】sh执行脚本报错Syntax error: “(“ unexpected_第1张图片


你可能感兴趣的:(shell)