Пока цикл в Shell

Я хочу сделать цикл while... в моем сценарии Shell следующим образом:

while [ $line < $line_number ]; do
    echo $line
done

Но есть ошибка. Я думаю, это потому, что я написал это в bash код. Но мне нужно сделать это в sh Режим. Как мне это сделать? Спасибо!

1 ответ

Решение

Вам нужно использовать, либо

while [ $line -lt $line_number ]; do
    echo $line
done

или же

while [[ $line < $line_number ]]; do
    echo $line
done

Дискуссия [источник]

не замужем [] являются послегарантийными тестами состояния оболочки.

двойной [[]] являются расширением стандарта [] и поддерживаются bash и другими оболочками (например, zsh, ksh). Они поддерживают дополнительные операции (а также стандартные операции posix). Например: || вместо -o и регулярное выражение, совпадающее с =~, Более полный список различий можно найти в разделе руководства bash по условным конструкциям.

использование [] всякий раз, когда вы хотите, чтобы ваш сценарий был переносимым между оболочками. использование [[]] если вы хотите, чтобы условные выражения не поддерживались [] и не нужно быть портативным.

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