Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在shell脚本中逐行读取多行输出命令?_Shell_Multiline - Fatal编程技术网

如何在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