shell脚本编写习惯
前言:在公众号看一篇比较不错的shell脚本文章,自己学习同时,加一些例子分享下,哪里做得不好,请多多指教哈
一.在脚本写注释
1 #脚本的参数 2 #脚本的用途 3 #脚本的注意事项 4 #脚本的写作时间,作者,版权等 5 #各个函数前的说明注释 6 #一些较复杂的单行命令注释
二、脚本中有命令运行失败时退出脚本
set -o errexit 或 set -e
例子:touch命令替换为touchs
#!/bin/bash set -e number=1 echo $number touchs 1.txt set +e
执行脚本
sh test.sh test.sh: line 6: touchs: command not found
三、脚本中使用到未声明变量时退出脚本
set -o nounset 或 set-u
例子:number是未声明变量
#!/bin/bash set -u numbers=1 echo $number echo '哈哈' set +u
执行脚本
sh test.sh test.sh: line 5: number: unbound variable
四、使用双引号引用变量
例子:一个普通循环
例子 #!/bin/bash set -u for i in `seq 10`;do echo "$i" done
五、在脚本中多使用函数
#!/bin/bash set -ue get_load() { uptime } get_time() { date } get_load get_time
六、用$(command) 代替传统的`command`
例子:
#!/bin/bash set -ue current=$(date) echo "$current"
七、用readonly声明静态变量
静态变量不会改变;它的值一旦在脚本中定义后就不能被修改,对于这类变量,在声明的时候应该用readonly去声明。
例子:
#!/bin/bash set -ue readonly app_dir="/data/apps" echo "$app_dir" app_dir="/data/app" echo "$app_dir"
执行脚本
sh test.sh test.sh: line 5: app_dir: readonly variable
八、命名规范
系统环境变量命名为大写,自己定义的变量用小写