击.来自背景管道命令的标准输出
发布时间:2020-12-16 01:56:40 所属栏目:安全 来源:网络整理
导读:我不知道如何恢复在后台启动的“管道”命令的标准输出.我们来解释一下.我有这个命令: iface=$(airmon-ng start wlan0 2 /dev/null | grep monitor) 我想发送所有背景以使用$!恢复pid,但是当我把在任何地方,grep停止工作,iface var为空.任何的想法?谢谢.
我不知道如何恢复在后台启动的“管道”命令的标准输出.我们来解释一下.我有这个命令:
iface=$(airmon-ng start wlan0 2> /dev/null | grep monitor) 我想发送所有背景以使用$!恢复pid,但是当我把&在任何地方,grep停止工作,iface var为空.任何的想法?谢谢. 解决方法
如果你想在等待grep的输出时获得脚本仍在运行的状态,你可以使用现有的工具,比如pv,它会将进度表打印到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 '%sn' "$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) 或者你可以让你的后台命令写入临时文件并在之后得到答案 airmon-ng start wlan2 2>/dev/null >/tmp/airmon_out & # your spinner stuff iface=$(cat /tmp/airmon_out) 或者你甚至不需要它在变量中,因为很多东西都知道如何操作文件 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 将参数传递给Docker容器
- 老男孩教育每日一题-第90天:写一个脚本并进行判断
- angularjs – 如何将角度材料datepicker的ng-model字符串格
- mongodb – mongod –bind_ip使用docker-compose版本2
- scala – 如何将数据框的列转换为Apache Spark中的列表?
- 如何通过docker-compose而不是使用docker启动selenium hub和
- 如何在bash中检索命令的输出的第一个单词?
- angularjs – “外部”导航以纠正angular.js url(直接链接/
- bash – 在Jenkins的构建步骤之间传递数据
- weblogic Error 404--Not Found