Как проверить, пуст ли файл или в нем есть только пустые символы?

case ${hostname%"servername0"[123]} in
("$hostname") ! :;; 
(foo|bar) ;;
(*) ! :;; esac
5
21.08.2017, 19:09
3 ответа

Просто grepдля символа, отличного от пробела:

grep -q '[^[:space:]]' < "$file" &&
  printf '%s\n' "$file contains something else than whitespace characters"
19
27.01.2020, 20:32

Если вы хотите проверить наличие пустого содержимого файла в условии if [[... ]], окружите grep-z $( grep... )(без -q):

if [[ -z $(grep '[^[:space:]]' $file) ]] ; then
  echo "Empty file" 
 ...
fi

Мне пришлось использовать это, чтобы избежать следующей ошибки при запуске:

$ [[ grep -q '[^[:space:]]' $file ]]

-bash: conditional binary operator expected

-bash: syntax error near `-q'

-1
27.01.2020, 20:32

Аналогично другим ответам, но с использованием отрицанияgrep -q

if ! grep -q '[^[:space:]]' "$file"; then
    echo "file is empty"
else
    echo "File has data"
fi
1
29.02.2020, 18:00

Теги

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