【问题标题】:sh shell for loop without seqsh shell for 没有 seq 的循环
【发布时间】:2014-09-13 21:17:25
【问题描述】:

我正在编写一个必须在 bash 和 sh 中运行的脚本,它运行在一个很小的平台上,并且似乎缺少一些东西,例如 seq。所有这些限制/要求使得编写这个脚本非常困难。我需要编写一个适用于所有这些要求的 for 循环。

这仅适用于 bash:

for (( i = 0; i <= 4; i++ ))
do
  echo $i
done

这应该可以在 sh 中使用,但是我使用的平台显然缺少 seq。

for i in $(seq 1 $INPUT); do

$INPUT 是用户定义的最大值。

【问题讨论】:

  • @Joel,看看你的 /bin/sh 代表什么。例如。在 debian 系统上,它主要链接到 dashdash 不支持 for (()) contruction。

标签: bash for-loop sh


【解决方案1】:

现在的孩子们被他们新奇的 shell 内置程序宠坏了。

i=1
while [ $i -le $INPUT ]; do
  echo $i
  i=$(expr $i + 1)
done

【讨论】:

  • 为“脾气暴躁”额外 +1
  • shell 很可能至少符合 POSIX 标准,因此您可以使用 i=$((i+1)) 而不是 expr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 2011-01-07
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多