背景

在docker一个Ubuntu(16.04)的容器里,运行一个以前用过的Shell脚本,报错:

syntax error: unexpected “(“
以前都运行的好好的,这就奇了怪了,而且更奇怪的是报错的地方是function这行:

function make_mvapp()
{
...
}

解决

搜索一把,发现很多一样的情况

  • 查看Shell版本
    ls -l /bin/sh
    lrwxrwxrwx 1 root root 9 2月  12  2019 /bin/sh -> dash
    发现sh指向的是dash
    因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash
  • 解决:
    重新配置dash
    sudo dpkg-reconfigure dash
    提示是否为系统默认shell的时候选择no
    重新再查看Shell版本,OK
    重新运行脚本,OK

参考

https://www.jianshu.com/p/63c07b049c25