후속 질문에서어제 받은 질문:
Linux에서 스크립트를 실행하는 Datastage ETL 도구에서 다음 명령을 실행하고 있습니다.
나는 다음을 실행했다:
for file in /Path/filename_*; do [[ $(wc -l "$file" | cut -d' ' -f1) -eq 1 ]] && rm $file ; done
Reply=0
이 경우 내 폴더에 빈 파일이 있습니다.
for file in /Path/filename_*; do [[ $(wc -l "$file" | cut -d' ' -f1) -eq 1 ]] && rm $file ; done
Reply=1
내 폴더에 빈 파일이 없습니다.
둘 다 동일한 명령이지만 응답이 다릅니다. 응답 코드 1을 받으면 작업이 실패합니다.
답변1
0이 아닌 상태를 유지하려면 연산자 대신 명령문을 [[
사용할 수 있습니다 .if
&&
if [[ $(wc -l <"$file") -eq 1 ]]; then
echo rm -- "$file"
fi
모든 행을 계산하는 대신 두 번째 행만 읽어야 할 수도 있습니다.
for file in /Path/filename_*; do
[ -f "$file" ] || continue
{
read _
read _ || echo rm -- "$file"
} <"$file"
done
두 번째 줄이 read
실패하면 POSIX에 따라 두 번째 줄이 없습니다.