2016-10-13 2 views
0

Когда я файл Выполнение выражений 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'. – Barmar

ответ

3

Проблема эта линия:

if [ $USE>30 ]; then 

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

if [ $USE '>' 30 ]; then 

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

if [ $USE -gt 30 ]; then 
Смежные вопросы