要debug同事写的脚本但是尼玛看不懂,真么办?
Bash到人话翻译机:http://explainshell.com/
别坑同事
每个重要、循环、需要人管的脚本开头必写:
set -euo pipefail
很多脚本都是利用类似于cron或者rundeck的scheduler来定期跑的,如果脚本失败会通知人去修改。如果不去set -euo pipefail
,脚本中可能有指令失败了,然而脚本运行完毕之后仍然显示成功(然后通知就没有发出去,然后你家oncall就被你无声地害死了)。
详见:http://blog.kablamo.org/2015/11/08/bash-tricks-eux/
调试bash脚本用set -x
,这样每个指令开跑之前都会print出来再跑。
登录信息别放Version Control里
可以放在环境参数里,也可以写一个config.cfg
文件,然后在脚本里面source 'config.cfg'
。working directory这种因环境而变的参数也应该放在config.cfg
文件里。