if(-z "$file1" && "file2") {
print "file1 and file2 are empty";
} else {
print "execute";
}
이것을 작성하면 파일이 비어있을 때 인쇄되고 execute
파일이 비어 있지 않을 때 인쇄됩니다
file1 and file2 are empty
.
조건이 참일 때 인쇄되어야 합니다. file1 and file2 are empty
맞나요? 아직도 틀렸나요?
답변1
-z
및 이 누락되었습니다 $
. -z "$file2"
또한 파일 이름을 인용할 필요가 없습니다(그러나 이로 인해 오류가 발생하지는 않습니다). Perl 한 줄짜리 예제를 사용하여 다음 테스트를 실행하세요.
rm -rf foo bar
touch foo
perl -le 'my $file1 = "foo"; my $file2 = "bar"; if ( -z $file1 && -z $file2 ) { print "file1 and file2 are empty"; } else { print "execute"; }'
# File 'bar' does not exist, so -z $file2 evaluates to false:
# execute
rm -rf foo bar
touch foo bar
perl -le 'my $file1 = "foo"; my $file2 = "bar"; if ( -z $file1 && -z $file2 ) { print "file1 and file2 are empty"; } else { print "execute"; }'
# Both files exist and are zero size, so both '-z' tests evaluate to true:
# file1 and file2 are empty
rm -rf foo bar
touch foo bar
echo '1' > bar
perl -le 'my $file1 = "foo"; my $file2 = "bar"; if ( -z $file1 && -z $file2 ) { print "file1 and file2 are empty"; } else { print "execute"; }'
# File 'bar' iz non-zero size, so -z $file2 evaluates to false:
# execute
답변2
-z
귀하의 명세서에 하나가 누락되어 있습니다 if
.
if ( -z "$file1" && -z "$file2" ) {
print "file1 and file2 are empty";
}
else {
print "execute";
}