2014-01-14 146 views
0

我一直在嘗試爲我的項目之一編寫非常基本的通用 bash選項解析器。這個想法是如下:將元素添加到bash數組

  • I進料的命令行參數的列表,其中一些是選項
  • 我想提取的選項到一個單獨的陣列
  • 我將結束與兩個陣列:用於參數
    • 一個陣列
    • 一個用於選擇
陣列

注意:我不在乎可選的選項和帶參數的選項。對我而言,所有選項都是開關。

這裏是我此刻的代碼:

parse() { 
    options=() 
    arguments=() 

    for arg 
    do 
    if [[ $arg = -* ]] 
    then 
     options+=("$arg") 
    else 
     arguments+=("$arg") 
    fi 
    done 

    echo $options 
    echo $arguments 
} 

# $ parse --one --two -v "FOO" "BAR" 
# => --one 
# => FOO 

的問題,因爲你可以在輸出中看到的,是隻有第一個選項,第一個參數都存儲在數組中。

我在做什麼錯誤?

回答

3

解析和存儲是可以的,輸出是錯誤的:您只打印數組的第一個元素。

請參閱 「陣列」 在man bash正確的語法:

echo "${options[@]}" 
echo "${arguments[@]}"