Пока цикл в 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 по условным конструкциям.
использование []
всякий раз, когда вы хотите, чтобы ваш сценарий был переносимым между оболочками. использование [[]]
если вы хотите, чтобы условные выражения не поддерживались []
и не нужно быть портативным.