Проверьте, содержит ли текст символы неASCII в сценарии оболочки

Вы пропускаете по крайней мере некоторые средства разработки, требуемые создавать ядро. Если Вы делаете

apt-get install make gcc

это получит Вас движение. Могло бы быть больше требуемых пакетов, но Вы, конечно, не сможете создать ядро без тех двух.

4
06.04.2015, 01:43
3 ответа

Команда file может сообщить вам тип файла (ASCII, юникод, двоичный и т. Д.).

$ file my_file.txt
my_file.txt: ASCII text

Таким образом, вы можете просто проверить, содержит ли вывод слово «ASCII», и это должно работать:

if [[ file my_file.txt | grep -i ascii ]] ...
2
27.01.2020, 20:52

Ваш код тестирует, является ли значение переменной текст , как минимум один символ ASCII. Если вы хотите проверить, есть ли $ Text , содержит символы без ASCII, вам необходимо инвертировать набор. Кстати, [: ASCII:] - независимая локаль, поэтому вам не нужно устанавливать LC_CTYPE .

if [[ $TEXT = *[![:ascii:]]* ]]; then
  echo "Contain Non-ASCII"
fi

Обратите внимание, что [: ASCII:] - это функция Bash (ZSH). Если вы хотите, чтобы ваш скрипт работать на KSH или просто SH, вам нужно будет использовать локаль. Вот портативный метод:

LC_CTYPE=C
case $TEXT in
  *[![:cntrl:][:print:]]*) echo "Contain Non-ASCII";;
esac

Если вы хотите проверить содержимое файла, используйте GREP .

if LC_ALL=C grep -q '[![:cntrl:][:print:]]' somefile; then
  echo "Contain Non-ASCII"
fi
5
27.01.2020, 20:52
TEXT=SOMETEXTHERE

RESULT=$(echo $TEXT | LC_COLLATE=C grep -r '[^ -~]')
if [ -z "$RESULT" ]; then
    echo "ALL ASCII"
else
    echo "Contain Non-ASCII"
fi
-1
27.01.2020, 20:52

Теги

Похожие вопросы