В чем разница между -lt и <в оболочке? - PullRequest
2 голосов
/ 21 июня 2019

Я изучаю сценарии оболочки и не понимаю разницы между -eq и ==, -lt и <, -gt и > и так далее.

Я пытаюсь записать цикл печати с 0 на 9

num=0
while [ $num -lt 10 ]; do
   echo "$num"
   ((num++))
done

Этот код работает, но когда я изменяю -lt на <, он говорит, что такого файла нетили каталог.

num=0
while [ $num < 10 ]; do
   echo "$num"
   ((num++))
done

В чем проблема с < здесь?Мне всегда нужно идти на -lt в циклах while?Есть ли общий способ делать циклы while?Благодарим Вас за помощь.

Ответы [ 4 ]

4 голосов
/ 21 июня 2019

Сценарии оболочки всегда были разными, когда дело доходит до синтаксиса.

, поэтому, когда вы говорите -lt, это означает меньше (<). Поэтому, когда вы пишете свой код, он работает совершенно нормально </p>

while [ $num -lt 10 ]; do
   echo "$num"
   ((num++))
done

Но когда вы используете <, это в сценарии оболочки используется для чтения ввода из файла или каталога.Так что здесь, в вашем случае, он будет искать имя файла, который находится внутри переменной $num

Простыми словами

  1. -lt меньше того, что используется для проверки состояния

  2. < используется для чтения ввода из файлов.

2 голосов
/ 21 июня 2019

в командной строке <</strong> означает чтение ввода из файла

например grep "myname"

также, > перенаправить вывод в файл

например ls> lists.txt

при выполнении $ num <10 </strong> это проверка на файл с именем 10

0 голосов
/ 21 июня 2019

Вы можете использовать '<' с двойными скобками (целыми числами) или фигурными скобками (строками) </p>

num=0
while (( $num < 10 )); do
    echo "$num"
    ((num++))
done

и для строк

str="a"
while [[ $str < "aaaaa" ]]; do
    echo "$str"
    str+="a"
done
0 голосов
/ 21 июня 2019

Команда [ указывает, что -lt следует использовать для сравнения двух целых чисел. Ожидать, что < сделает что-нибудь полезное, просто хочется.

По совпадению, символ < - это метасимвол в bash, используемый для перенаправления ввода . Вы получаете ошибку из-за того, что файл 10 не существует в вашем cwd.

...