背景

  • 平时自己设计shell脚本或修改服务器自带的脚本后,执行或者source的是否会出现了的错误。

可能出现的问题

格式问题

  1. shell脚本是在window系统下写完,然后传到linux系统时出现,可以使用系统文件格式转化:dos2unix

  2. 可以在vi编辑模式下查看文件格式

    #换成你要使用的脚本名
    
    vi ****.sh
  3. Esc键退出编辑模式,输入下面的命令查看格式。

    :set ff
  4. 如果脚本文件显示的不是unix格式,那么就执行下面的命令将文件格式转换为unix格式。

    :set fileformat=unix
  5. 执行完之后输入下面的命令保存并退出编辑页面

    :wq

脚本内容问题

  1. 如果上面的dos2unix命令后,执行还是出现报错,那就不是文件格式的问题了,而是代码层级的问题了

  2. 因为没有lint代码规范提示,所以你的shell脚本内容,需要从头到尾检查下:
    a. if...else...fifor...donefor...if...fi...done等结构的上下结构闭合是否完整
    b. 闭合结构型代码的开始和结尾是否有其他多余字符

  3. 执行下面的命令检查脚本内容,具体到哪一行语法有错误。

    #将install换成你的脚本名
    
    sh -n install.sh
  4. 从下面的结果中可以看到语法错误提示(参考)

    root@nas:/volume1/docker# sh -n install.sh
    install.sh: line 61: syntax error: unexpected end of file
    
  5. 剩下的就是逐步排查你的脚本了

功德+1(狗子).gif

👇👇👇