たとえば、次のようなPOSIXシェルスクリプトがあるとします。
最も一般的な方法で小数点記号を検出するにはどうすればよいですか?
それがzsh
シェルスクリプトの場合、_$langinfo
_モジュールで_zsh/langinfo
_特殊連想配列を使用できます。
_zmodload zsh/langinfo
radix=$langinfo[RADIXCHAR]
_
(これは標準のnl_langinfo(RADIXCHAR)
に対応します。詳細については、システムの_man nl_langinfo
_を参照してください。桁区切り記号は_$langinfo[THOUSEP]
_です)。
bash
スクリプト(zsh
でも機能します)では、printf
ビルトインを使用して別のプロセスをフォークすることなく、スクリプトを取得できます。
_printf -v radix %.1f 1 && radix=${radix:1:1}
_
Ksh93シェルを使用して、ユーザーのロケール形式からCロケール形式に数値を変換するには、次のようにします。
_$ 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
_