
다음 내용에 문제가 있나요? 오류 가 발생합니다 [: too many arguments
.
if [ 'wc -l pid.txt | awk '{print $1}'' -ge "1" ]
then
for line in $(cat pid.txt)
do
kill $line
done
else
rm pid.txt
fi
답변1
좋은 활동과 발전에 감사드립니다.
while read
루프가 빈 파일에서 실행되지 않으므로 파일 내용을 테스트할 필요가 없습니다 .[ -s pid.txt ] || rm pid.txt
그런 다음 .pid 파일을 사용하여 간단히 삭제할 수 있습니다 .하지만, 정말 처리된 파일을 보관할 이유가 있나요? 어쨌든 삭제하고 싶으신 것 같습니다.
while read -r line
do
kill "$line"
done < pid.txt
[ -s pid.txt ] || rm pid.txt
while read
대신 루프가 사용되고 있습니다 for $(cat ...)
.줄을 읽을 때 for를 사용하지 마세요.
이 -r
옵션은 "백슬래시로 이스케이프된 문자를 허용하지 않음"을 지정합니다. 이는 실제로 pid 파일에서는 문제가 되지 않지만 특별한 이유가 없는 한 항상 설정하는 것이 가장 좋습니다.