如何在shell脚本中逐行读取多行输出命令?
如果我执行命令如何在shell脚本中逐行读取多行输出命令?,shell,multiline,Shell,Multiline,如果我执行命令android list avd,我会得到以下输出 Available Android Virtual Devices: Name: X10_Mini Path: /home/myhome/.android/avd/X10_Mini.avd Target: Android 2.1 (API level 7) ABI: armeabi Skin: 240x320 Sdcard: 2G --------- Name: AVD_for_4
android list avd
,我会得到以下输出
Available Android Virtual Devices:
Name: X10_Mini
Path: /home/myhome/.android/avd/X10_Mini.avd
Target: Android 2.1 (API level 7)
ABI: armeabi
Skin: 240x320
Sdcard: 2G
---------
Name: AVD_for_4in_WVGA_Nexus_S
Path: /home/myhome/.android/avd/AVD_for_4in_WVGA_Nexus_S.avd
Target: Android 2.1 (API level 7)
ABI: armeabi
Skin: 480x800
Sdcard: 2G
我想将名称和目标存储在shell脚本中的数组中
如果我使用命令
for elem in `android list avd | cut -d: -f1,2`; do
echo $elem;
done;
变量$elem(显然)将包含整个输出的每个字
如何读取每行命令行的输出?也许我找到了另一种解决方案,可以在循环之外使用变量 我必须将默认的IFS更改为换行
echo Searching for android virtual devices ...
IFS=$'\n';
for l in $(${PROGDIR}/android list avd) ; do
VAR1=$(echo $l | cut -d: -f1 | sed -e 's/\s*//'); #sed removes trailing blanks
if [ $VAR1 == "Name" ]; then
NUM_AVD=$(($NUM_AVD+1));
fi;
done
echo "NUM_AVD=$NUM_AVD"
在这种情况下,NUM_AVD正确地为2