Вы пропускаете по крайней мере некоторые средства разработки, требуемые создавать ядро. Если Вы делаете
apt-get install make gcc
это получит Вас движение. Могло бы быть больше требуемых пакетов, но Вы, конечно, не сможете создать ядро без тех двух.
Команда file
может сообщить вам тип файла (ASCII, юникод, двоичный и т. Д.).
$ file my_file.txt
my_file.txt: ASCII text
Таким образом, вы можете просто проверить, содержит ли вывод слово «ASCII», и это должно работать:
if [[ file my_file.txt | grep -i ascii ]] ...
Ваш код тестирует, является ли значение переменной текст
, как минимум один символ 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
TEXT=SOMETEXTHERE
RESULT=$(echo $TEXT | LC_COLLATE=C grep -r '[^ -~]')
if [ -z "$RESULT" ]; then
echo "ALL ASCII"
else
echo "Contain Non-ASCII"
fi