Форум русскоязычного сообщества Ubuntu


Автор Тема: [: -b: binary operator expected  (Прочитано 224 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kduk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
[: -b: binary operator expected
« : 05 Март 2018, 21:08:55 »
Код: Bash
  1. HTML=./kva.html
  2. if [ du -b "$HTML" ] ; then
  3.         echo "Empty"
  4. else
  5. echo "No"
  6. fi

небольшой кодик, но вылазит ошибка, что не так? пробовал ставить двойные [[ ]], но тогда ругается ещё и на них   
« Последнее редактирование: 06 Март 2018, 15:16:22 от Azure »

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 1831
  • X-9000SC
    • Просмотр профиля
Re: [: -b: binary operator expected
« Ответ #1 : 05 Март 2018, 21:39:02 »
[ - это команда test, а не конструкция if!
если проверяете, пустой ли файл, лучше так
HTML=./kva.html
if [ ! -s "$HTML" ]  ; then
echo "Empty"
else
echo "No"
fi

подробнее: man test

Пользователь добавил сообщение 05 Март 2018, 21:45:53:
или по вашему сценарию (но это костыль и лучше так не делать!)
HTML=./kva.html
if (( $(du -b "$HTML" | cut -f1) == 0 )) ; then
   echo "Empty"
else
echo "No"
fi
Сами видите, сколько всего лишнего.
Здесь опять же, (( - не конcтрукция if, а команда выполнения арифметических действий (замена let)!

Почитайте, кстати - https://habrahabr.ru/company/mailru/blog/311762/
Очень хорошо рассказано о некоторых нюансах bash
« Последнее редактирование: 05 Март 2018, 21:51:22 от ALiEN175 »
45100

Оффлайн kduk

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: [: -b: binary operator expected
« Ответ #2 : 07 Март 2018, 15:38:46 »
[ - это команда test, а не конструкция if!
если проверяете, пустой ли файл, лучше так
Почитайте, кстати - https://habrahabr.ru/company/mailru/blog/311762/
Очень хорошо рассказано о некоторых нюансах bash

Огромное спасибо!

 

Страница сгенерирована за 0.127 секунд. Запросов: 24.