2016-09-14 186 views
0

我有一個數組如何搜索在shell腳本元素

聲明-a水果=(「蘋果」,「香蕉」「芭樂」,「櫻桃」,「芒果」,「荔枝」)

我需要編寫一個shell腳本,它可以採用多個參數(逗號分隔)。它應該檢查每個參數與數組水果的情況下,如果參數不匹配它應退出陳述參數不在數組中。它應該返回所有的參數無效

如./dummy.sh胡蘿蔔,土豆,白菜

O/P:胡蘿蔔,馬鈴薯,白菜在陣列沒有發現

如2 ./dummy.sh香蕉,在列表

+0

我想下面發現芒果 O/p香蕉,芒果:我嘗試以下操作: 因爲我在$(回聲 「$ {參數}」 | sed的「S /,//G」) ;爲「$ {fruits [@]}」中的j做 \t flag = 0 ;做 \t \t如果[ 「$ I」 == 「$ J」] 然後 \t \t \t標誌= 1個 休息 否則 改編=我 網絡 做 \t如果[ 「$標誌」!= 1] 然後 回聲「在陣列中未找到$ arr」 fi 完成 –

+2

爲什麼參數應該是逗號分隔列表?那不是慣用的外殼。 – kojiro

回答

1
#!/usr/bin/bash  
declare -a fruits=("apple" "banana" "guava" "cherry" "mango" "litchi") 

IFS=, read -ra args <<< "$1" 
for arg in "${args[@]}" 
do 
    #echo "Searching for $arg" 
    found=0 
    for fruit in "${fruits[@]}" 
    do 
     if [[ $fruit == $arg ]]; then found=1; break; fi 
    done 
    if [[ $found == 0 ]]; then echo "$arg is not found"; break; fi 
done