2016-09-14 4 views
0

私は私は、シェルスクリプト内の要素を検索するにはどうすればよい

は-a果物を宣言配列=(「りんご」「バナナ」「グァバ」「桜」「マンゴー」「ライチ」)

Iを持っていますシェルスクリプトを書く必要があり、複数の引数(カンマ区切り)を取ることができます。引数と配列が一致しない場合は引数をチェックして、引数が配列ではないことを終了する必要があります。配列には見られない、ニンジン、ジャガイモ、キャベツ

例えば2 ./dummy.sh:それはすべての無効な引数

例:./dummy.shニンジン、ジャガイモ、キャベツ

O/Pを返す必要がありますバナナ、マンゴー O/Pバナナ、リスト

+0

で見つかったマンゴー、私は以下しようとしています:私は、次しようとしています:私は$(エコー "$ {引数}" の | /」sのsedのを、// g "); do "$ {fruits [@]}"の中でjの \tフラグ= 0 ;やる \t \tであれば[ "$ I" == "$ jの"] その後、 \t \t \tフラグ= 1つの ブレーク他 編曲行わ=私は Fiの \tであれば[ "$フラグ"!= 1] then echo "配列に$ arrが見つかりません" fi done –

+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 
関連する問題