Remover vírgulas:
declare -a arr=(
"NUMERIC"
"TIME"
"MONETARY"
"PAPER"
"MEASUREMENT")
Eu estou tentando criar um script de locale no bash para definir automaticamente o lc_ctype
para o array e, em seguida, local-gen. O problema que estou enfrentando é acrescentar cada item da matriz ao local desejado.
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
A saída:
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
Como posso obter o resultado abaixo sem a vírgula?
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
A saída inesperada é devido às vírgulas na atribuição dos elementos da matriz. Estes podem ser removidos, pois não fazem parte da sintaxe e, portanto, não são necessários (a menos que você queira vírgulas, isto é).
Um loop menos complicado para você:
printf "LC_%s=$lc_ctype\n" "${arr[@]}"
ou, sem o array:
printf "LC_%s=$lc_ctype\n" NUMERIC TIME MONETARY PAPER MEASUREMENT
Dependendo da finalidade deste exercício, pode ser interessante notar que definir o valor de LC_ALL
terá o mesmo efeito que definir os valores de todas as variáveis LC_
individualmente para o mesmo valor.
As vírgulas são do seu array, tente assim:
declare -a arr=(
"NUMERIC"
"TIME"
"MONETARY"
"PAPER"
"MEASUREMENT")
Tags bash locale shell-script