Это выражение
[ $vr > 5 ]
в настоящее время анализируется в качестве выходного перенаправления; проверьте, есть ли у вас файл с именем «5». Выходное перенаправление пусто. Обратите внимание, что обычные рекомендации для цитирования параметров внутри тестового выражения здесь не помогли бы (но это все же хорошая идея).
Вы можете избежать >
так, что она рассматривается как оператор в команде тест:
if [ "$vr" \> 5 ]; then
или вы можете использовать оператор целое сравнения -gt
if [ "$vr" -gt 5 ]; then.
Поскольку вы используете bash
, вы можете использовать более надежные условное выражение
if [[ $vr > 5 ]]; then
или
if [[ $vr -gt 5 ]]; then
или использовать арифметическое выражение
if ((vr > 5)); then
сделать ваши сравнения (аналогично для остальные).
Примечание: хотя я показал, как сделать >
работу в качестве оператора сравнения даже в окружении целых, не делают этого. В большинстве случаев вы не получите желаемых результатов, поскольку аргументы сравниваются лексикографически, а не численно. Попробуйте [ 2 \> 10 ] && echo What?
Используйте либо правильные операторы сравнения целого числа (-gt
и др.), Либо используйте арифметическое выражение.
такой надежный ответ! – TopGunCoder
Так много возможных решений! :) – chepner
Это очень четкое объяснение. Ценить это. И да, создается файл под названием «5». – itsh