bashの3.xの中で値によって配列インデックスを見上げる:./script_name 604
が、私はこのスクリプトで呼び出す
#!/bin/bash
switchedChannel=($1)
channelArray=('108' '162' '163' '604' '141' '113')
for array_item in "${channelArray[@]}"; do
if [[ $array_item == ${switchedChannel[0]} ]] then
"$array_item MATCHES"
fi
done
一致するarray_itemのインデックスを取得する方法はあります(またはそれ以外の位置を取得します単純にvarをカウンタとして使用し、これを繰り返し実行するのではなく、配列内の一致したアイテム)
常に一致しますが、配列の値は一意であるため、一致するのは1つだけです。
(私はマッチングされていない配列項目で何かをする必要があるので、私は尋ねていますので、配列からマッチした項目を削除することを考えています。短いリストの場合は、一致するとすぐにループを終了することをお勧めします)。
'switchedChannel'は配列ではありません。 – chepner
あなたの値がすべて正の数である場合は、連想配列は必要ありません。まばらなインデックス配列が必要です。 –
BTW - 'switchedChannel =($ 1)'はかなりバグがあります。あなたのプログラムが './yourProg '*''で始まっていれば、配列のローカルディレクトリにあるファイルのリストを取得できます。 'IFS = 0'とユーザーが' 109'を渡すと、最初のエントリが '1'で2番目のエントリが' 9'である配列が得られます。あなたの実際の目標は何ですか?文字列を配列に読み込みたいのであれば、一般的な正しい方法は 'read -r -a switchedChannels'のようなものです。なぜこのことが意図であるのかは分かりませんが。 –