以下有什么问题吗?我收到一个[: 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 文件中实际上不应该成为问题,但最好的做法是始终进行设置,除非有特定原因不这样做。