Disons que j'ai un script Shell POSIX qui
Comment détecter le séparateur décimal de la manière la plus générale?
Demandez locale
:
locale decimal_point
Cela produira le point décimal en utilisant les paramètres régionaux actuels.
Si vous avez besoin du séparateur de milliers:
locale thousands_sep
S'il s'agit d'un script Shell zsh
, vous pouvez utiliser le tableau associatif spécial $langinfo
Dans le module zsh/langinfo
:
zmodload zsh/langinfo
radix=$langinfo[RADIXCHAR]
(qui correspond à la nl_langinfo(RADIXCHAR)
standard, voir man nl_langinfo
sur votre système pour plus de détails; $langinfo[THOUSEP]
pour le séparateur de milliers).
Dans un script bash
(qui fonctionnerait également dans zsh
), vous devriez pouvoir l'obtenir sans bifurquer un processus séparé en utilisant le module intégré printf
:
printf -v radix %.1f 1 && radix=${radix:1:1}
Pour convertir un nombre du format de paramètres régionaux de l'utilisateur au format de paramètres régionaux C, avec le shell ksh93, vous pouvez le faire comme suit:
$ locale title
German locale for Germany
$ x=1.123.456,78 ksh -c 'typeset -F x="$x"; LC_ALL=C; printf "%.23g\n" "$x"'
1123456.78