我有一个cmd
,除非出现错误,否则不会终止。此命令输出字符串,我想捕获不同的字符串,并为每个输出执行不同的命令。
我知道如何处理一个输出($str1
- 简单字符串)和一个特定命令($cmd1
- 简单echo
命令)的命令:
until cmd | grep -m 1 "$str1"; do; $cmd1; done
但我希望能够让$str2
做$cmd2
等案例......
答案 0 :(得分:1)
这样的事情?
cmd | while read -r line;
do
case "$line" in
str1) echo "do something"
;;
str2) echo "do something else"
;;
*) echo "ignore"
;;
esac;
done
因为OP没有提供任何细节,所以这是一个组成的过程,它会生成一个错误的字符串和出口流
$ (for i in {1..5}; do sleep 1; echo "this is str$i"; done; exit 1) |
while read -r line;
do
case "$line" in
*str1*) echo "do something"
;;
*str2*) echo "do something else"
;;
*) echo "ignore"
;;
esac;
done
产生
do something
do something else
ignore
ignore
ignore