centos 和ubutu 默认bash 不一致导致脚本报错

川长思鸟来 2022-05-25 00:11 210阅读 1赞

Linux 运维以及脚本干货: 欢迎分享,欢迎folk
https://unnunique.github.io/AADocs/skill-docs/linux/
https://github.com/unnunique/unnunique.github.io/blob/master/AADocs/skill-docs/linux/index.md

  1. #!/bin/sh
  2. a=( 1 2 3)
  3. for number in ${a[@]}
  4. do
  5. echo $number
  6. done
  7. 执行该脚本,在有的机器上会报错Syntax error: "(" unexpected
  8. 这与你实际使用的shell版本有关。你可以用 ls -l /bin/*sh 打印出来,例如:
  9. -rwxr-xr-x 1 root root 959120 Mar 29 2013 /bin/bash
  10. lrwxrwxrwx 1 root root 21 Nov 22 2013 /bin/csh -> /etc/alternatives/csh
  11. -rwxr-xr-x 1 root root 109768 Mar 30 2012 /bin/dash
  12. lrwxrwxrwx 1 root root 4 Mar 29 2013 /bin/rbash -> bash
  13. lrwxrwxrwx 1 root root 4 Mar 30 2012 /bin/sh -> dash
  14. lrwxrwxrwx 1 root root 7 Nov 17 2012 /bin/static-sh -> busybox
  15. lrwxrwxrwx 1 root root 13 Oct 15 2011 /bin/tcsh -> /usr/bin/tcsh
  16. 在这里,sh被重定向到dash,因此,如果执行./example.sh,则使用的是dash
  17. 避免报错可有多种方法,例如执行 bash example.sh,或者,将脚本第一行改为
  18. #!/bin/bash,执行./example.sh也可以。

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读