ZSHのランダム配列要素へのアクセス

ZSHのランダム配列要素へのアクセス

私はZSHをメインシェルとして使用しており、ランダムに配列にアクセスしようとしています。人々が電話を続けているのを見るのにfeh注文はありません。私も持っていますが_feh、同じものなのか、コマンドが何なのかはわかりません。

参照は次のとおりです。

FILES=( .../files/* )
feh $FILES[$RANDOM%$#FILES+1]

私のテストは次のとおりです。

test=(a b c); feh ${test[$RANDOM]}

参考までにOSX 10.10.xを使用しています。結局私はこれを私が所有しているいくつかのホストへのSSHアクセスをランダムに指定するために使用します。

ベストアンサー1

fehはイメージビューアです。その部分は無視してください。 2番目の部分だけが必要です。

デフォルトでは、任意の配列要素にアクセスするには、次のものが必要です。つまり${arr[${ri}]}、配列の任意のインデックスでなければなりません。ri$(( $RANDOM % ${#arr[@]} + 1))riarr

今までの乱数で解析します$RANDOM % N。この場合、配列の長さ(要素の数)ですが、配列インデックスはinで始まるので、toの値を返すには必ず()を追加する必要があります。0N-1N${#arr[@]}1zsh+ 1$(( $RANDOM % ${#arr[@]} + 1 ))1N

たとえば、配列の任意の要素を印刷する場合:

print -r -- ${arr[$(( $RANDOM % ${#arr[@]} + 1 ))]}

あるいは、簡単に言えば、配列インデックスは算術式で解析されます。

print -r -- "$arr[RANDOM % $#arr + 1]"

cshスタイルの構文を使用している場合(拡張子を中括弧で囲んでいない場合)、下付き文字を解析するために引用符が必要です。または(kshスタイル)zshで作成できます。$arr[RANDOM%$#arr+1]${arr[RANDOM % $#arr + 1]}

おすすめ記事