首页 > 解决方案 > 执行命令是 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  

我究竟做错了什么?

标签: bashshell

解决方案


尝试

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}'

推荐阅读