上一篇文章参见Bash Pitfalls: 编程易犯的错误(三)。这一篇翻译得不是非常满意,时间比较赶,请见谅,如果有问题可以在本文后方留言,大家一起深入探讨。
36. [ -n $foo ] or [ -z $foo ]
这个例子中,$foo 没有用引号引起来,当$foo包含空格或者$foo为空时都会出问题:
$ foo="some word" && [ -n $foo ] && echo yes -bash: [: some: binary operator expected $ foo="" && [ -n $foo ] && echo yes yes
正确的写法是:
[ -n "$foo" ] [ -z "$foo" ] [ -n "$(some command with a "$file" in it)" ] [[ -n $foo ]] [[ -z $foo ]]
37. [[ -e "$broken_symlink" ]] returns 1 even though $broken_symlink exists
这里-e 选项是看文件是否存在,当紧跟的文件是一个软链接时,它不看软链接是否存在,而是看实际指向的文件是否存在。所以当软链接损坏时,即实际指向的文件被删除后,-e 的结果返回1。