Командная строка, если не работает должным образом

Я относительно новичок в программировании терминала. Я пытаюсь запустить условие IF в цикле FOR. (Команда должна выполняться cronjob)

for i in {1..5}; do echo $i; if [ $i>3 ]; then echo $i; fi; done

Я хочу, чтобы она выводилась как

1
2
3
4
4
5
5

Но реальный вывод этой команды -

1
1
2
2
3
3
4
4
5
5

Может ли кто-нибудь помочь мне указать на ошибку?

Спасибо!

2
задан 29 April 2016 в 17:01

2 ответа

[ скобки являются псевдонимом для test управляйте и существует нет > войдите в систему регулярная тестовая команда. Использовать [ $i -gt 3 ]

$ for i in {1..5}; do echo $i; if  [ $i -gt 3 ] ; then echo $i; fi; done
1
2
3
4
4
5
5

Вы могли использовать арифметическое расширение удара (()) также

$ for i in {1..5}; do echo $i; if  (( $i>3 )) ; then echo $i; fi; done
1
2
3
4
4
5
5

Вы могли использовать expr также, но я гарантирую 100%, к которым Вы продолжите забывать \ выйдите < и > поет, а также вывод перенаправления к /dev/null:

$> if expr 3 \> 2 > /dev/null ; then echo YES; else echo NO ; fi                           
YES
$> if expr 3 \< 2 > /dev/null ; then echo YES; else echo NO ; fi                           
NO
7
ответ дан 30 April 2016 в 03:01
  • 1
    @ElderGeek Да, я просто заметил, что забыл писать, что Вы имеете к sudo apt install python3-notify2 сначала. Добавленный, что теперь, благодарит обратить внимание. – Byte Commander♦ 1 October 2017 в 23:59

Редактирование Вашей команды к этому должно работать:

for i in {1..5}; do echo $i; if [[ $i -gt 3 ]]; then echo $i; fi; done

Как дополнительное улучшение, если эта команда будет только выполнена в ударе, Это стоит использовать [[ вместо [. Это делает почти такую же вещь, но имеет некоторых хороших дополнительная функциональность .

2
ответ дан 30 April 2016 в 03:01

Другие вопросы по тегам:

Похожие вопросы: