次の内容に問題がありますか?エラーが発生します[: 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ファイルでは問題ではありませんが、特に理由がない限り、常に設定するのが最善です。