在bash中,什么';s[[test1&;test2]]与[[test1]]之间的差异&;[[test2]]
以下两种bash评估有什么区别(如果有):在bash中,什么';s[[test1&;test2]]与[[test1]]之间的差异&;[[test2]],bash,Bash,以下两种bash评估有什么区别(如果有): if [[ -s $file1 && $file1 -nt $file2 ]]; then if [[ -s $file1 ]] && [[ $file1 -nt $file2 ]]; then 没有区别。它们在功能上完全相同 有趣的是,如果您使用[而不是[[,则实际上存在可检测的差异,这是由评估顺序引起的: [ -s "$file1" -a "$file1" -nt "$(echo side effect >
if [[ -s $file1 && $file1 -nt $file2 ]]; then
if [[ -s $file1 ]] && [[ $file1 -nt $file2 ]]; then
没有区别。它们在功能上完全相同
有趣的是,如果您使用
[
而不是[[
,则实际上存在可检测的差异,这是由评估顺序引起的:
[ -s "$file1" -a "$file1" -nt "$(echo side effect >&2)" ]
[ -s "$file1" ] && [ "$file1" -nt "$(echo side effect >&2)" ]
在这种情况下,第一行将打印“副作用”,而第二行不会打印
然而,这同样只适用于[
,而不适用于[[]]