找回密码
 注册
首页 ≡≡网络技术≡≡ 服务器 sh执行脚本报错Syntax error: “(“ unexpected

linux sh执行脚本报错Syntax error: “(“ unexpected

灰儿 2024-1-23 17:10:04
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


您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。