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 【沒有輸出結果】