Martin xu (@x.martinxu)Ubuntu下执行sh脚本报错Syntax error unexpected 中发帖

自问自答,昨天在工作中遇到的问题 
在 centos 下可以运行的脚本,拷贝到 ubuntu 下直接执行报错:
./xxx.sh: 5: ./xxx.sh: Syntax error: "(" unexpected

检查脚本没有问题,使用命令调试执行脚本时也没有问题:
bash -x xxx.sh

排查
使用调试执行没有问题,就证明脚本本身没有问题,那就是环境可能有问题。
也就是说,直接执行脚本时,不是使用 bash 执行的。
经查,在 ubuntu 上,sh 是/bin/dash 的软链接,好吧,直接执行脚本是 dash。
原因
其他常见的 linux 发行版,虽然很多是将 sh 指向 bash,但是在 debian/ubuntu 上 sh 命令默认是指向 dash,而不是 bash
又因为 dash 是比 bash 还轻量的,只支持基本的 shell 功能,其中不包括刚...