常见的 shell 脚本错误

主要观点:

  • 作者写过和读过很多 shell 脚本,发现常见问题反复出现,虽有 shell 编程陷阱但可立即告知,错误可能导致脚本运行问题,应正确学习 shell 脚本语言。
  • 要避免 shell 脚本偏离 UNIX 抽象(文件和进程),注意风格问题,如避免使用特定的旧语法、双否定等,减少不必要的 shell 逻辑,利用条件参数扩展等。
  • 讨论了 shell 脚本的健壮性,如 globbing 处理文件时要避免常见错误,注意引号以处理各种文件名情况,设置 set -e 避免脚本在命令失败时继续执行,清理临时文件要使用 trap 等。
  • 提到 shell 脚本的可移植性,考虑 shell 语言本身和被调用的工具,测试脚本时可用 POSIX 兼容的 shell 如 dash,避免 bash 特定构造等。
  • 阐述了 shell 脚本的性能,通过 globbing 等例子比较 bash 和 dash 解释器的速度,强调应尽量减少 shell 脚本中的操作,利用 UNIX 系统中的工具进行更高效的处理。

关键信息和重要细节:

  • shell 是设计用于操作 UNIX 数据和逻辑抽象的领域特定语言,常用于 UNIX 系统。
  • 风格方面的具体问题及改进方法,如避免 x"$var"等旧语法,直接测试字符串避免双否定等,利用条件参数扩展处理文件名等。
  • 健壮性方面,globbing 处理文件时要注意避免冗余和错误,引号处理文件名要遵循多方面准则,设置 set -e 自动停止在错误处,使用 trap 清理临时文件等。
  • 可移植性方面,考虑 shell 语言和工具,用 POSIX 兼容的 shell 如 dash 测试脚本,避免 bash 特定构造如双等号等,注意信号规格等的兼容性。
  • 性能方面,通过不同例子比较 bash 和 dash 解释器的速度,强调减少 shell 脚本操作和利用 UNIX 工具的重要性,以及注意磁盘 seek 问题。
阅读 17
0 条评论