以下两个bash评估中有什么区别,如果有的话:
if [[ -s $file1 && $file1 -nt $file2 ]]; then
if [[ -s $file1 ]] && [[ $file1 -nt $file2 ]]; then
答案 0 :(得分:5)
没有区别。它们在功能上完全相同。
有趣的是,如果您使用[
而不是[[
,实际上会有一个可检测的差异,原因是评估顺序:
[ -s "$file1" -a "$file1" -nt "$(echo side effect >&2)" ]
[ -s "$file1" ] && [ "$file1" -nt "$(echo side effect >&2)" ]
在这种情况下,第一行会打印“副作用”而第二行则不打印。
但是,这仅适用于[
,而不适用于[[ ]]
。