Я хочу сделать оператор while ... loop в моем скрипте Shell, например:
while [ $line < $line_number ]; do
echo $line
done
Но есть ошибка. Я думаю, что это потому, что я написал это в коде bash
. Но мне нужно сделать это в режиме sh
. Как мне это сделать? Спасибо!
Необходимо использовать, также
while [ $line -lt $line_number ]; do
echo $line
done
или
while [[ $line < $line_number ]]; do
echo $line
done
Disscussion [источник]
Единственный []
совместимые тесты условия оболочки posix.
Дважды [[]]
расширение стандарта []
и поддерживаются ударом и другими оболочками (например, zsh, ksh). Они поддерживают дополнительные операции (а также стандарт posix операции). Например: ||
вместо -o
и соответствие regex =~
. Более полный список различий может быть найден в разделе руководства удара по условным конструкциям.
Использовать []
каждый раз, когда Вы хотите, чтобы Ваш сценарий был портативным через оболочки. Использовать [[]]
если Вы хотите условные выражения, не поддерживаемые []
и не должны быть портативными.