2013-08-26 112 views
2

如果我執行命令android list avd我得到了以下輸出如何在shell腳本中逐行讀取多行輸出命令?

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將(顯然)包含整個輸出的每個單詞。

如何讀取每行命令行的輸出?

回答

1

也許我找到了不同的解決方案,在那裏我可以使用變量也環路 我不得不改變默認的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