得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

set 了 uexo

bash 写多了,就不得不调试,然鹅又不像 python 一样有精彩的第三方库可以提供丰富的调试信息

多看点 bash 脚本,都应该见过下面这句话,那它是什么意思呢?

1
2
3
4
5
6
set -uexo pipefail
# 等同于
set -u
set -e
set -x
set -o pipefail

set -u : 对任何没有定义的变量($* 和 $@ 除外)的引用都将引发一个错误,并导致程序立即退出

set -x : 将所有执行的命令都打印到终端

set -o pipefail : 如果管道中的任何命令失败,则该返回代码被用作整个管道的返回代码;在没有设置这个选项的时候,即默认情况下,管道的返回代码是最后一个命令的返回代码

set -e : 在任何命令具有非零退出状态时立即退出

但是,set -e 并不是一个非常可靠的选项,因为有很多命令即使没有错误也会返回非零值

外部程序向 shell 传递的唯一信息是退出状态——按照约定,0 表示成功,非 0 表示 “某种错误”,Bourne shell 的开发人员决定,他们将创建一个特性,允许 shell 检查它运行的每个命令的退出状态,如果其中一个命令返回非零,则中止该特性,于是,set -e 就诞生了

更多的例子可以看这里

be yourself, everyone else is already taken.