我正在尝试在 bash 中创建一个区域设置脚本,以自动将其设置lc_ctype
为数组,然后设置为 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")