lc_ctype
bashでロケールスクリプトを生成して自動的に配列に設定し、local-genに設定しようとしています。私が直面している問題は、各配列項目を目的のロケールに追加することです。
declare -a arr=(
"NUMERIC",
"TIME",
"MONETARY",
"PAPER",
"MEASUREMENT")
lc_ctype="en_US.UTF-8"
for i in ${arr[@]};
do
lc="LC_${i}=$lc_ctype"
echo $lc
done
出力:
LC_NUMERIC,=en_US.UTF-8
LC_TIME,=en_US.UTF-8
LC_MONETARY,=en_US.UTF-8
LC_PAPER,=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
コンマなしで次の出力をどのように取得できますか?
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
答え1
カンマを削除してください。
declare -a arr=(
"NUMERIC"
"TIME"
"MONETARY"
"PAPER"
"MEASUREMENT")
答え2
予期しない出力は、配列要素の割り当て時にコンマが原因で発生します。これは構文の一部ではないため、必要ないので削除できます(カンマを使用しない限り)。
あまり複雑でないループを提供します。
printf "LC_%s=$lc_ctype\n" "${arr[@]}"
または配列なし:
printf "LC_%s=$lc_ctype\n" NUMERIC TIME MONETARY PAPER MEASUREMENT
この演習の目的に応じて値を設定することは、LC_ALL
すべての変数の値を個別に同じ値に設定するのとLC_
同じ効果があることに注意する価値があります。
答え3
コンマは配列から来ます。次のようにしてみてください。
declare -a arr=(
"NUMERIC"
"TIME"
"MONETARY"
"PAPER"
"MEASUREMENT")