Запуск скрипта для проверки использования диска создает новый файл. почему?

#linux #shell

#linux #оболочка

Вопрос:

Когда я выполняю script.sh файл, который содержит следующее содержимое

 USE=`df -h "/scratch/" | tail -1 | awk '{ print $4 }' | sed s/%//g`
if [ $USE>30 ]; then
   echo "The limit has exceeded"
else
   echo "The limit is not exceeded"
fi
  

Он создает новый файл 40 в каталоге, где он выполняется. Почему это происходит?

Комментарии:

1. Он должен создавать файл с именем 30 , а не 40 .

Ответ №1:

Проблема в этой строке:

 if [ $USE>30 ]; then
  

>30 означает перенаправление вывода команды в файл с именем 30 (не 40 ). Вам нужно > заключить символ в кавычки, чтобы предотвратить его особое значение. Кроме того, test команда требует, чтобы каждый аргумент был разделен:

 if [ $USE '>' 30 ]; then
  

Однако > это для буквенно-цифрового сравнения. Для числовых сравнений вам нужно использовать `-gt:

 if [ $USE -gt 30 ]; then