Shell 中的 While 循环

Shell 中的 While 循环

我想在我的 Shell 脚本中创建一个 while...loop 语句,例如:

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

讨论[来源]

单一[]是符合 posix shell 的条件测试。

Double[[]]是标准的扩展[],由 bash 和其他 shell(例如 zsh、ksh)支持。它们支持额外的操作(以及标准 posix 操作)。例如:||而不是-o和 正则表达式匹配=~。可以在以下位置找到更完整的差异列表:bash 手册中有关条件构造的部分

[]当您希望脚本可跨 shell 移植时使用。[[]]如果您希望条件表达式不受 shell 支持[]且不需要移植,请使用。

相关内容