使用Shell脚本的一些小建议
别把 Shell 当做"脚本语言"。
Shell 的首要身份是 “交互式命令行解释器” ,其次才是“脚本语言”。“灵活性”和“简洁性”的优先级通常高于“绝对的严谨性”。
如果真的要写,为了编写最健壮的 Bash 脚本,社区推荐在脚本开头使用以下组合:set -euo pipefail
- set -e (errexit): 任何命令返回非零退出状态码(表示失败),脚本立即退出。
- set -u (nounset): 使用未定义变量时,脚本立即退出。
- set -o pipefail: 在管道(|)中,只要有任何一个命令失败,整个管道的退出状态码就是失败的(非零)。默认情况下,只有最后一个命令的退出码才算数。
当然,对复杂脚本,直接用 python 吧。