在bash中,[[test1&& amp; test2]] vs [[test1]]&& [[test2]]

时间:2013-12-16 21:12:42

标签: bash

以下两个bash评估中有什么区别,如果有的话:

if [[ -s $file1 && $file1 -nt $file2 ]]; then

if [[ -s $file1 ]] && [[ $file1 -nt $file2 ]]; then

1 个答案:

答案 0 :(得分:5)

没有区别。它们在功能上完全相同。


有趣的是,如果您使用[而不是[[,实际上会有一个可检测的差异,原因是评估顺序:

[ -s "$file1" -a "$file1" -nt "$(echo side effect >&2)" ] 

[ -s "$file1" ] && [ "$file1" -nt "$(echo side effect >&2)" ] 

在这种情况下,第一行会打印“副作用”而第二行则不打印。

但是,这仅适用于[,而不适用于[[ ]]