Я использую следующий синтаксис оболочки (из моего предыдущего вопроса, ответ - phemient), чтобы проверить, является ли файл ASCII (текст) или другим

if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
   echo "file contains non-ascii characters"
   else
     echo "file contains ascii characters only"
fi

проблема в том, что я получаю «файл содержит символы, отличные от ascii» (из синтаксиса сценария оболочки), даже если test_file является файлом ASCII, почему?

Я также проверяю файл с помощью команды file, и это то, что я получаю

file test_file 
Non-ISO extended-ASCII English text" its also ASCII file 

мой вопрос: как изменить синтаксис оболочки, чтобы поддерживать также "английский текст не-ISO extended-ASCII"?

поэтому я получу печать "файл содержит только символы ascii" из сценария оболочки

  remark the solution must be for Linux and solaris

Спасибо

1 ответ1

0

Привет, я бы использовал что-то вроде:

#!/bin/bash
if [[ `file -b $1` == "ASCII text" ]] ; then
   echo "file contains ascii characters only"
   else
     echo "file contains non-ascii characters"
fi

Похоже:

$ filetest.sh 1.txt  
file contains ascii characters only
$ filetest.sh PHOTOS/HPIM0532.jpg  
file contains non-ascii characters

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .