版权声明:本文为CSDN博主「青峰祭坛」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014470581/article/details/51493150
自己写了一个简单的shell脚本,在serve1上还能运行,转到serve2就不能运行了,报错如下:
然后就开始百度,看见了了转载的博客和一篇原创博客,转载博客的原地址没有在文中看见,原创博客的地址上面已经给出。原创博客分析了一些问题,而转载博客则更“傻瓜式”操作,在这里感谢两位大佬:
原创博客:https://blog.csdn.net/u014470581/article/details/51493150
昨天更新了Virtualmin的系统识别部分,目的是让它能支持Debian系统下的一键安装和优化,代码修改了差不多,将VPS重新安装为Debian,通过sh ./virtualmin.sh执行代码就报“Syntax error: “(” unexpected”错误,通过bash ./virtualmin.sh执行就没问题。几经查找语法,没有问题,后来在网上找到问题原因:
代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。
sudo dpkg-reconfigure dash
在选择项中选No,搞定了!
转载博客:https://blog.csdn.net/weixin_33785108/article/details/86048044
问题:
在MAC上写了一段shell脚本,放到Ubuntu上运行总是报下面这个错误,单步调试都是对的,就是直接运行会报错。
bixiaopeng@ubuntu:~/package$ sh package.sh
package.sh: 8: package.sh: Syntax error: "(" unexpected
原因:
兼容性问题,因为linux将sh默认指向了dash,而不是bash
解决:
-
#在root下面执行 dpkg-reconfigure dash,选择no
-
bixiaopeng@ubuntu:~/package$ su
-
Password:
-
root@ubuntu:/home/bixiaopeng/package# dpkg-reconfigure dash
再次执行脚本就OK了