変数を動的に追加する方法

変数を動的に追加する方法

変数を動的に追加する方法 次のスクリプトを作成しましたが、エラーが発生します。

#!/bin/bash
X='101 Hari BAN'
for i in "${X[@]}"
    do
            "V"$j=`echo $i|cut -d' ' -f$j`              
            echo "V"$j
            j=`expr $j + 1`
    done

出力は次のようになります。

V1=101
V2=Hari
V3=BAN

ベストアンサー1

まず、使用中でbash繰り返したい場合別のもの、次の配列を使用します。

X=( 101 Hari BAN "many words" "a * in the sky" )

これにより、スペースとファイル名のグロービングパターンを含む文字列を適切に引用して正しく処理できます。

その後、配列を繰り返します。

X=( 101 Hari BAN "many words" "a * in the sky" )

for item in "${X[@]}"; do

done

その後、出力結果に問題があります。これにはカウンター合計を使用しますprintf

X=( 101 Hari BAN "many words" "a * in the sky" )

n=0
for item in "${X[@]}"; do
    printf 'V%d=%s\n' "$(( ++n ))" "$item"
done

書式printf文字列は、V%d=%s\nV文字の後に整数、a、=および一部の文字列が続きます。改行文字で終わります」を意味します。整数と文字列は残りのパラメータから取得されますprintf。この変数はn使用前に増分されますprintf

#!通訳者を指す正しい行を追加すると、bash作業は完了です。

出力は次のとおりです

V1=101
V2=Hari
V3=BAN
V4=many words
V5=a * in the sky

以下の説明によると、これは変数であると予想していますが、V1出力V2では明らかにテキストです。

今回もここで必要なのは別の変数ではなく配列だと思います。

実際、私たちがすでに持っている配列にはX必要なデータが含まれているので、名前を変更するだけです。

#!/bin/bash

V=( 101 Hari BAN )

for i in "${!V[@]}"; do
    printf 'V[%s] = %s\n' "$i" "${V[i]}"
done

つまり、単になどを使用して配列の要素にアクセスできます"${V[0]}""${V[1]}"V

おすすめ記事