我不知道如何恢复命令的标准"管道"在后台发布。我们来解释一下。我有这个命令:
/
我想发送所有后台以使用$!恢复pid,但是当我把&在任何地方,grep停止工作,iface var为空。任何的想法?谢谢。
答案 0 :(得分:0)
如果您想在等待grep
的输出时获得脚本仍在运行的状态,您可以使用pv
之类的现有工具来打印进度表{{1}所以它不会干扰你捕获输出。
如果失败了,你可以编写一个比我想象的stderr
解决方案慢的函数,但是会让你更新微调器,比如每行如
pv
或者你可以让你的后台命令写入临时文件并在
之后得到答案get_monitor() {
printf ' ' >&2 # to put a first char there to backspace the spinner over
while read -r line; do
if [[ $line =~ monitor ]]; then
printf '%s\n' "$line"
fi
update_spinner
done < <(airmon-ng start wlan0 2>/dev/null)
}
sp_ind=0
sp_chars='/-\|'
sp_num=${#sp_chars}
update_spinner() {
printf '\b%s' "${sp_chars:sp_ind++%sp_num:1}" >&2
}
iface=$(get_monitor)
或者你甚至不需要它在变量中,因为很多东西都知道如何操作文件