重写shell脚本,让cat不会逃避检查

问题描述 投票:0回答:1

目前我用的是

#!/bin/sh
while [ -e "${XDG_RUNTIME_DIR}" ]; do cat ${FIFO} ; done | my_program

为 my_program 创建一个 fifo,它从 stdin 读取。

问题是

cat
打破了 while 循环检查,并且在我的 xdg_runtime_dir 不再存在之后该过程继续进行。

有没有办法重写这个,以便强制执行检查,即当xdg_runtime_dir不存在时,进程终止?

shell sh cat fifo mkfifo
1个回答
0
投票
如果您使用

while

 链接两个命令,则 
&&
 构造可以测试两个命令:

while test -e "${XDG_RUNTIME_DIR}" && cat ${FIFO}; do sleep 1 done | my_program
现在,如果任一条件为假,则循环终止。

请注意,如果您只想在

第二条件下终止,您可以使用

while test -e "${XDG_RUNTIME_DIR}"; cat ${FIFO}; do ...
因为 

while

 实际上需要一个 
list 命令,并且列表的退出状态是最后一个命令的状态。

© www.soinside.com 2019 - 2024. All rights reserved.