我需要做類似的事情:
while true
do
if ss --tcp --processes | grep 53501 ; then <save result to /tmp/cmd.out> ; fi
done
uj5u.com熱心網友回復:
本質上不可能做到這一點,因為命令(或命令管道)在運行時會產生輸出,但在完成運行之前不會產生退出狀態(成功/失敗);因此,在輸出完成之前,您無法決定是否保存輸出。
您可以做的是將輸出臨時存盤在某個地方,然后保存或不保存。我不確定這是否正是您想要做的,但可能是這樣的(使用變數作為臨時存盤):
while true
do
output=$(ss --tcp --processes | grep 53501)
if [ -n "$output" ]; then
echo "$output" >/tmp/cmd.out
fi
done
uj5u.com熱心網友回復:
回圈看起來很危險,最終您將while耗盡磁盤空間。
while true
do
ss --tcp --processes | grep 53501 &>> /tmp/cmd.out
sleep 1
echo "Careful about using while true without any sleep"
done
&>> 管道并將所有 STDERR 和 STDOUT 附加到檔案中,如果 grep 什么也沒找到,自然輸出將什么都沒有。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/417261.html
標籤:
上一篇:在fortran中優化陣列乘法
