通过超级用户的答案。
我试图修改这个来侦听多个string,并回显自定义消息,如; “你的服务器启动成功”等
我也试图解决它的另一个命令,即点
wait_str() { local file="$1"; shift local search_term="Successfully installed"; shift local search_term2='Exception' local wait_time="${1:-5m}"; shift # 5 minutes as default timeout (timeout $wait_time tail -F -n0 "$file" &) | grep -q "$search_term" && echo 'Custom success message' && return 0 || || grep -q "$search_term2" && echo 'Custom success message' && return 0 echo "Timeout of $wait_time reached. Unable to find '$search_term' or '$search_term2' in '$file'" return 1 }
我记住的用法是:
pip install -r requirements.txt > /var/log/pip/dump.log && wait_str /var/log/pip/dump.log
为了澄清,我想得到wait_str停止尾随pip退出,无论成功与否。
以下是一般的答案, tail
可以被任何导致线条流的命令所取代。
如果不同的字符串需要不同的动作,则使用以下内容
tail -f var/log/pip/dump.log |awk '/condition1/ {action for condition-1} /condition-2/ {action for condition-2} .....'
如果多个条件需要相同的操作,则使用OR运算符分隔它们:
tail -f var/log/pip/dump.log |awk '/condition-1/ || /condition-2/ || /condition-n/ {take this action}'
基于评论:单awk
可以做到这一点。
tail -f /path/to/file |awk '/Exception/{ print "Worked"} /compiler/{ print "worked"}'
要么
tail -f /path/to/file | awk '/Exception/||/compiler/{ print "worked"}'
或者如果找到匹配则退出
tail -f logfile |awk '/Exception/||/compiler/{ print "worked";exit}'