bash - 执行命令是 bash 并为其输出提取数据
问题描述
我必须从终端中执行的以下命令中提取一些需要的数据:
emulator -avd emualtor-666
在我执行之后,我在终端中得到了这样的输出,在一秒钟内有一个小的延迟:
emulator: Listening for console connections on port: 5566
emulator: Serial number of this emulator (for ADB): emulator-5566
emulator: emulator window was out of view and was recentered
所以我需要从第一行提取端口值:5566或从第二行提取emulator-5566。我怎样才能做到这一点?
我绑定了以下脚本,但它只是卡在返回任何行:
#!/usr/bin/env bash
emuName=$1
IFS=$'\n'
for line in $(emulator -avd "$emuName");
do
echo ${line}
done
我究竟做错了什么?
解决方案
尝试
emulator -avd emualtor-666 | head -1 | cut -d ':' -f 3
或者
emulator -avd emualtor-666 | sed -e 's/.*Listening.*://;t;d'
或者
emulator -avd emualtor-666 | awk '/Listening/ {gsub(/.*:/,""); print}'
推荐阅读
- node.js - 如何使用 github 操作中的令牌从私有 git 存储库安装 npm pckage
- c# - 将列表从 get 方法(或视图)传递到 post 方法 ASP .NET MVC
- kubernetes - kubelet 服务未启动
- reactjs - 如何使用钩子设置计算属性的状态
- gtk3 - Vala 基础 Goo & GTK+
- javascript - 如何使用变量访问 item.name、item.price、item.tag、item.incart
- pthreads - OpenMP 和 Pthread 的实现
- reactjs - 如何将redux中的参数注入React中的函数
- android - SearchView 不使用 ListView 过滤结果
- laravel - 从特定类别中获取新闻以及 laravel 中的每个新闻作者