Skip to content

Instantly share code, notes, and snippets.

@sash-kan
Created November 12, 2011 16:59
Show Gist options
  • Save sash-kan/1360811 to your computer and use it in GitHub Desktop.
Save sash-kan/1360811 to your computer and use it in GitHub Desktop.
locale setting tests
#!/bin/bash
dotest() {
printf "%-${longest}s" "$1"
echo -ne "\t"
local i
for i in "${array[@]}"; do
# unset all locale variables before test
eval $(env | grep -oE '^(LANG(UAGE)?|LC_[^=]*)' | sed 's/^/unset /')
eval $1
bash $(dirname $0)/atest.bash "$i"
done
echo
}
doheader() {
printf "%-${longest}s" "environment"
echo -e "$header1"
printf "%-${longest}s" " "
echo -e "$header2"
}
array=(
"LANG=C" "export LANG=C"
"LANG=POSIX" "export LANG=POSIX"
"LANG=en_US.utf8" "export LANG=en_US.utf8"
"LC_ALL=C" "export LC_ALL=C"
"LC_ALL=POSIX" "export LC_ALL=POSIX"
"LC_ALL=en_US.utf8" "export LC_ALL=en_US.utf8"
"LC_CTYPE=C" "export LC_CTYPE=C"
"LC_CTYPE=POSIX" "export LC_CTYPE=POSIX"
"LC_CTYPE=en_US.utf8" "export LC_CTYPE=en_US.utf8"
)
longest=0
header1=''
header2=''
for elem in "${array[@]}"; do
[ ${#elem} -gt $longest ] && longest=${#elem}
header1="${header1}\t"
echo "$elem" | grep -q "export"
[ "$?" -eq 0 ] && header1="${header1}export"
header2="${header2}\t"
echo "$elem" | grep -q "LANG"
[ "$?" -eq 0 ] && header2="${header2}LANG="
echo "$elem" | grep -q "LC_ALL"
[ "$?" -eq 0 ] && header2="${header2}ALL="
echo "$elem" | grep -q "LC_CTYPE"
[ "$?" -eq 0 ] && header2="${header2}CTYPE="
header2="${header2}$(echo $elem | sed -r 's/.*(.)$/\1/')"
done
doheader
envarray=("#empty" "${array[@]}")
for elem in "${envarray[@]}"; do
dotest "$elem"
done
echo
bash --version | head -n 1
$(ldd $(which bash) | sed -nr '/libc\./{s=^[^/]*/([^ ]*) .*$=/\1=;p}') | head -n 1
#!/bin/bash
eval $1
r=$(echo -ne '\xd1\x84' | sed 's/./1/g' | wc -c)
b=-1
if [ "$r" == "2" -a "${1:$b}" != "8" -o "$r" == "1" -a "${1:$b}" == "8" ]; then
echo -ne "passed\t"
else
echo -ne "failed\t"
fi
environment export export export export export export export export export
LANG=C LANG=C LANG=X LANG=X LANG=8 LANG=8 ALL=C ALL=C ALL=X ALL=X ALL=8 ALL=8 CTYPE=C CTYPE=C CTYPE=X CTYPE=X CTYPE=8 CTYPE=8
#empty passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=C passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=POSIX passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=en_US.utf8 passed passed passed passed passed passed failed passed failed passed passed passed failed passed failed passed passed passed
LC_ALL=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=C passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=en_US.utf8 failed failed failed failed passed passed passed passed passed passed passed passed failed failed failed failed passed passed
LC_CTYPE=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=en_US.utf8 failed failed failed failed passed passed failed passed failed passed passed passed passed passed passed passed passed passed
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
GNU C Library stable release version 2.5, by Roland McGrath et al.
environment export export export export export export export export export
LANG=C LANG=C LANG=X LANG=X LANG=8 LANG=8 ALL=C ALL=C ALL=X ALL=X ALL=8 ALL=8 CTYPE=C CTYPE=C CTYPE=X CTYPE=X CTYPE=8 CTYPE=8
#empty passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=C passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=POSIX passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=en_US.utf8 passed passed passed passed passed passed failed passed failed passed passed passed failed passed failed passed passed passed
LC_ALL=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=C passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=en_US.utf8 failed failed failed failed passed passed passed passed passed passed passed passed failed failed failed failed passed passed
LC_CTYPE=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=en_US.utf8 failed failed failed failed passed passed failed passed failed passed passed passed passed passed passed passed passed passed
GNU bash, version 3.2.25(1)-release (i386-redhat-linux-gnu)
GNU C Library stable release version 2.7, by Roland McGrath et al.
environment export export export export export export export export export
LANG=C LANG=C LANG=X LANG=X LANG=8 LANG=8 ALL=C ALL=C ALL=X ALL=X ALL=8 ALL=8 CTYPE=C CTYPE=C CTYPE=X CTYPE=X CTYPE=8 CTYPE=8
#empty passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LANG=C passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LANG=C passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LANG=POSIX passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LANG=POSIX passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LANG=en_US.utf8 passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LANG=en_US.utf8 passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LC_ALL=C passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LC_ALL=C passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LC_ALL=en_US.utf8 passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LC_ALL=en_US.utf8 passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
LC_CTYPE=en_US.utf8 passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
export LC_CTYPE=en_US.utf8 passed passed passed passed failed failed passed passed passed passed failed failed passed passed passed passed failed failed
GNU bash, version 3.2.19(2)-release (i586-mandriva-linux-gnu)
GNU C Library stable release version 2.7, by Roland McGrath et al.
environment export export export export export export export export export
LANG=C LANG=C LANG=X LANG=X LANG=8 LANG=8 ALL=C ALL=C ALL=X ALL=X ALL=8 ALL=8 CTYPE=C CTYPE=C CTYPE=X CTYPE=X CTYPE=8 CTYPE=8
#empty passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=C passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=POSIX passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=en_US.utf8 passed passed passed passed passed passed failed passed failed passed passed passed failed passed failed passed passed passed
LC_ALL=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=C passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=en_US.utf8 failed failed failed failed passed passed passed passed passed passed passed passed failed failed failed failed passed passed
LC_CTYPE=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=en_US.utf8 failed failed failed failed passed passed failed passed failed passed passed passed passed passed passed passed passed passed
GNU bash, version 4.2.10(2)-release (i486-pc-linux-gnu)
GNU C Library stable release version 2.13, by Roland McGrath et al.
environment export export export export export export export export export
LANG=C LANG=C LANG=X LANG=X LANG=8 LANG=8 ALL=C ALL=C ALL=X ALL=X ALL=8 ALL=8 CTYPE=C CTYPE=C CTYPE=X CTYPE=X CTYPE=8 CTYPE=8
#empty passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=C passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=POSIX passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=en_US.utf8 passed passed passed passed passed passed failed passed failed passed passed passed failed passed failed passed passed passed
LC_ALL=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=C passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=en_US.utf8 failed failed failed failed passed passed passed passed passed passed passed passed failed failed failed failed passed passed
LC_CTYPE=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=en_US.utf8 failed failed failed failed passed passed failed passed failed passed passed passed passed passed passed passed passed passed
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
GNU C Library (Debian EGLIBC 2.11.2-10) stable release version 2.11.2, by Roland McGrath et al.
environment export export export export export export export export export
LANG=C LANG=C LANG=X LANG=X LANG=8 LANG=8 ALL=C ALL=C ALL=X ALL=X ALL=8 ALL=8 CTYPE=C CTYPE=C CTYPE=X CTYPE=X CTYPE=8 CTYPE=8
#empty passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=C passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=POSIX passed passed passed passed passed passed passed passed passed passed failed passed passed passed passed passed failed passed
LANG=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LANG=en_US.utf8 passed passed passed passed passed passed failed passed failed passed passed passed failed passed failed passed passed passed
LC_ALL=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=C passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=POSIX passed passed passed passed failed failed passed passed passed passed passed passed passed passed passed passed failed failed
LC_ALL=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_ALL=en_US.utf8 failed failed failed failed passed passed passed passed passed passed passed passed failed failed failed failed passed passed
LC_CTYPE=C passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=C passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=POSIX passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=POSIX passed passed passed passed failed failed passed passed passed passed failed passed passed passed passed passed passed passed
LC_CTYPE=en_US.utf8 passed passed passed passed failed passed passed passed passed passed failed passed passed passed passed passed failed passed
export LC_CTYPE=en_US.utf8 failed failed failed failed passed passed failed passed failed passed passed passed passed passed passed passed passed passed
GNU bash, version 4.1.5(1)-release (mipsel-unknown-linux-gnu)
GNU C Library (Debian EGLIBC 2.13-21) stable release version 2.13, by Roland McGrath et al.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment