Seu código testa se o valor da variável TEXT
contém pelo menos um caractere ASCII. Se você quiser testar se $TEXT
contém caracteres não-ASCII, será necessário inverter o conjunto. A propósito, [:ascii:]
é independente de localidade, portanto, você não precisa definir LC_CTYPE
.
if [[ $TEXT = *[![:ascii:]]* ]]; then
echo "Contain Non-ASCII"
fi
Observe que [:ascii:]
é um recurso bash (e zsh). Se você quiser que seu script funcione no ksh ou no sh simples, será necessário usar o código do idioma. Aqui está um método portátil:
LC_CTYPE=C
case $TEXT in
*[![:cntrl:][:print:]]*) echo "Contain Non-ASCII";;
esac
Se você quiser verificar o conteúdo do arquivo, use grep .
if LC_ALL=C grep -q '[![:cntrl:][:print:]]' somefile; then
echo "Contain Non-ASCII"
fi