问题---执行sh ./xxx.sh出现:Syntax error: "(" unexpected (expecting "done")
这与实际使用的shell版本有关。
可以用 ls -l /bin/*sh 打印出来,例如:
在这里,sh被重定向到dash,因此,如果执行./example.sh,则使用的是dash 。
避免报错可有多种方法,例如执行: bash example.sh ;
或者将脚本第一行#!/bin/sh 改为:#!/bin/bash ,执行./example.sh也可以。
另一种解决办法:
代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash:
sudo dpkg-reconfigure dash ,在选择项中选No。
@https://blog.csdn.net/u014470581/article/details/51493150
【. . . . . .本博客仅作个人生活、工作、学习等的日常记录。说明: (1) 内容有参考其他博主、网页等,有因“懒”直接粘贴来,会备注出处。若遇雷同,或忘备注,并无故意抄袭之意,请诸“原主”谅解,很感谢您的辛勤"笔记"可供本人参考学习。 (2) 如遇同行,有参考学习者,因个人学识有限,不保证所写内容完全正确。您对本博文有任何的意见或建议,欢迎留言,感谢指正。 (3) 若您认为本主的全博客还不错,可以点击关注,便于互相学习。 (4) 感谢您的阅读,希望对您有一定的帮助。欢迎转载或分享,但请注明出处,谢谢。. . . . . .】
【作者: Carole0904 ; 出处: https://www.cnblogs.com/carle-09/ 】