钧言极客钧言极客

钧言极客

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

昨天刚刚写了一个系统优化的shell脚本,在进行测试的时候弹出Syntax error: "(" unexpected报错,开始还以为是我写的脚本不够严谨,就换到另外一个Linux环境进行测试,结果又可以跑起来。

shell

我检查一下shell版本,发现解析器是dash,这个时候就怀疑是Linux的shell环境存在不兼容的情况,因为shell的不同版本解析器有sh,bash,dash......等等,不兼容就会报错。

# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Dec 11  2020 /bin/sh -> dash

经查,在ubuntu和debian上,sh是/bin/dash的软链接,直接执行脚本是dash,Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash。

解决方法一

查看当前系统的shell使用什么版本,然后在脚本进行编辑,在首行添加一行来指定解析器。

#!/bin/bash

解决方法二

如果系统是Ubuntu/Debian 可以使用dpkg-reconfigure dash这个命令来进行切换。

shell

选择 NO 就可以,就可以再次执行命令测试。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《执行shell脚本报错:Syntax error: "(" unexpected》
文章链接:https://www.jinjun.top/426.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论