![빈 파일과 헤더만 제거: [닫음]](https://linux55.com/image/175893/%EB%B9%88%20%ED%8C%8C%EC%9D%BC%EA%B3%BC%20%ED%97%A4%EB%8D%94%EB%A7%8C%20%EC%A0%9C%EA%B1%B0%3A%20%5B%EB%8B%AB%EC%9D%8C%5D.png)
후속 질문에서어제 받은 질문:
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에 따라 두 번째 줄이 없습니다.