bash中的以下if语句有什么区别吗?
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then
我更喜欢哪一个?这些都是“更好”吗?
答案 0 :(得分:3)
-a
并非在所有较旧的(POSIX之前的)shell中都可用,因此在尝试移植时,您应该更喜欢&&
。
也就是说,如果您只支持bash,请使用其内置的[[ ]]
工具,该工具允许{/ 1}} 在范围内进行测试,而不是仅在其外部进行(和,作为一个额外的奖励,使引用可选):
&&
答案 1 :(得分:3)
首先是首选。有关原因,请参阅POSIX standard for the test
built-in的“应用程序使用情况”部分。简而言之,由于某些表达的含义含糊不清,-a
是一个标记为过时的扩展名。