【发布时间】:2017-01-26 21:26:47
【问题描述】:
查看superuser 的答案。
我正在尝试修改它以侦听多个字符串并回显自定义消息,例如 ; '您的服务器已成功启动' 等
我也在尝试将它附加到另一个命令,即 pip
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 退出时停止拖尾,无论成功与否。
【问题讨论】:
-
@PS。
tail命令不会退出。我需要这样做tail -f /var/log/pip/stderr.log | awk '/Exception/ { system("echo worked!")}' || awk '/compiler/ { system("echo worked!")}'来测试两个字符串。 -
您似乎假设这些命令并行运行,但您的命令显示串行执行。根据定义,
pip将在wait_str运行时完成,因为您将它们与&&连接,它等待pip并检查其退出状态,然后仅当pip成功时运行wait_str。
标签: python linux bash shell pip