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