目前我用的是
#!/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不存在时,进程终止?
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 命令,并且列表的退出状态是最后一个命令的状态。