我有一个 while 循环,简化版如下:
while read -r line
do
(delete some lines from file2.txt)
done < file.txt
如果
file2.txt
为空,则此while循环不再需要运行。换句话说,我需要这个:
while read -r line AND file2.txt IS NOT EMPTY
do
(delete some lines from file2.txt
done < file.txt
我尝试将
while read -r line
与-s file2.txt
结合起来,但结果不起作用:while [ read -r line ] || [ -s file2.txt ]
do
(delete some lines from file2.txt)
done < file.txt
我该如何使用这个while循环来读取文件中的行,并检查另一个文件是否为空?
while
循环中,您可以在(delete some lines from file2.txt)
之后加入一个if (file2.txt is empty check) ; then break ; fi
。我不确定您是如何从file2.txt
中删除行的,因此不确定您想要进行什么样的“空”检查。 - lurkersed -i "/$line/d" ./file2.txt
命令从file2.txt
文件中删除内容,这个操作是在 while 循环进行时发生的。问题是,file2.txt
很快就变成了空文件,但是while
循环却继续运行了几分钟,这是不必要的。如果我把if
条件语句放在while
条件语句内部,我认为脚本也不会加速。 - Villagemkfifo
)。我只是不确定sed -i
是否足够原子化。 - nhed