我想在我的 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 支持[]
且不需要移植,请使用。