Это утверждение неверно:
while [ -d $varDirectory ] && du -s $varDirectory > $minimumsize
>
перенаправляет вывод.Это не больше, чем оператор, -gt
.Это вызывает ваш бесконечный цикл.
Это тоже неправильно:
s=echo "$varDirectory is greater then 1kb"
Вы, вероятно, хотите сделать это вместо этого:
s="$varDirectory is greater then 1kb"
Это также имеет все видыпроблемы:
while [ -d $varDirectory ] && du -s $varDirectory < $minimumsize
echo $l
l=echo "$varDirectory is less than 1kb"
Для одного не существует do
или done
, так что это, вероятно, вызывает вашу синтаксическую ошибку.Также <
- это перенаправление, не меньше оператора, -lt
.
Надеюсь, вы не запускаете этот скрипт от имени root.
Обновление: Ваше обновление также имеет проблемы.
while [ -d $varDirectory ] && du -sh $varDirectory -gt $minimumsize
Должно быть:
while [ -d "$varDirectory" ] && [ $(du -k $varDirectory | cut -f1) -gt "$minimumsize" ]
Я добавил ""
в соответствии с предложением Дэвида.