#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