$value
その中に含まれる文字列を複数のBASH変数に割り当てたいと思います。
実際、前述の例(var1=var2=...=$value
)は、私が望むものを正確に反映していません。これまでこれを見つけましたが、$value
整数の場合にのみ機能します。
$ let varT=varz=var3=$value
どうすればいいですか?
答え1
私の考えでは、より読みやすくすることをお勧めします。
var1="$value" var2="$value" var3="$value" var4="$value" var5="$value" var6="$value" var7="$value" var8="$value" var9="$value" var10="$value"
しかし、これを非常に短い方法で行うには、次のことを試してください。
declare var{1..10}="$value"
編集済み: printf ではなく中括弧拡張を使用し、eval ではなく宣言を使用します。これは$value
。
参照。編集1:新しい状況でも中括弧拡張を使用できます。
declare var{T,z,3}="$value"
printf
を処理できるため、Annotationのメソッドよりも安全です$value
。
答え2
let
算術評価をしています。ではとbash
同じです(( ... ))
。これが、コードが整数としてのみ機能する理由です。
特別に名前付き変数の代わりに配列を使用してください。
var=( "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" "$value" )
printf 'var[5]=%s\n' "${var[5]}"
または関連配列、
declare -A var
var=( ["T"]=$value ["z"]=$value [3]=$value )
printf 'var[T]=%s\n' "${var["T"]}"
ループを実行することもできます。
for varname in var0 var1 varT varfoo; do
declare -n var="$varname"
var=$value
done
このループは変数名を繰り返します。ループ本体内で現在のループ変数を参照する名前参照変数を作成します。名前参照変数の値が設定されると、名前付き変数も設定されます。
答え3
value=balabala
eval var{1..10}=\$value
echo $var{1..10}
答え4
次のことができます。
declare {varT,varz}="$value"