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

0.描述:

        今天写了一个db2批量导出表结构和存储过程的脚本,其中有一块创建目录,多个目录写进了数组里,测试在rhel6.9上测试的,没有任何问题

        但是传到项目上,在使用sh 脚本名执行的时候,发现报错Syntax error: "(" unexpected

??what fuck ,什么情况,单独拿出来这一段是没问题的啊,我又去检查了一下脚本的格式unix和utf-8,e,到底是那里出的问题呢?知道我看到了下面的内容。

1.问题:

        ps:报错的哪一行就是我数组的(,额,确认过眼神,那就是对的问题

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

        $ str="123 456 789"
        $ array=($str)
        $ echo ${array[2]}
sh执行脚本会报错 Syntax error: "(" unexpected

2.原因:


        其他常见的linux发行版,虽然很多是将sh指向bash;debian/ubuntu上sh命令默认是指向dash,而不是bash

        又因为dash是比bash还轻量的,只支持基本的shell功能, 其中不包括刚才那种数组初始化,所以才会识别不了,直接报Syntx error

3.解决:

 解决办法是,直接用 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。

        原来不是我的问题,以后我决定执行脚本就用bash 脚本名了


 

猜你喜欢

转载自blog.csdn.net/qq_63693805/article/details/134077888
今日推荐