拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何将if陈述句中的命令结果保存到文本档案

如何将if陈述句中的命令结果保存到文本档案

白鹭 - 2022-03-15 2233 0 0

我需要做类似的事情:

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 什么也没找到,自然输出将什么都没有。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *