Shell编写规范总结——脚本开头
官网模板
#!/bin/bash set -eo pipefail shopt -s nullglob
set解释
脚本只要发生错误,就终止执行
set -e
示例
未加set
#!/bin/bash foo echo 1 // 执行结果: // 1.sh:行3: foo: 未找到命令 // 1
添加之后
#!/bin/bash set -e foo echo 1 // 执行结果: // 1.sh:行4: foo: 未找到命令
但是这种情况遇到管道就不行了,他只认为管道后面的命令成功就行
#!/bin/bash set -e foo|echo 1 echo 1 // 执行结果: // 1.sh:行4: foo: 未找到命令 // 1 // 1
使用pipfail方式
#!/bin/bash set -eo pipefail foo|echo 1 echo 1 // 执行结果: // 1 // 1.sh:行4: foo: 未找到命令
shopt解释
示例
[root@localhost tmp]# shopt nullglob nullglob off [root@localhost tmp]# mkdir tmp [root@localhost tmp]# cd tmp [root@localhost tmp]# for i in *; do echo "file: $i"; done file: * 【这里把通配符*作为字符输出了】 [root@localhost tmp]# shopt -s nullglob [root@localhost tmp]# shopt nullglob nullglob on [root@localhost tmp]# for i in *; do echo "file: $i"; done 【没有输出结果】