for循环的POSIX sh语法[SC2039]

cro*_*sso 2 shell posix for-loop

以下命令适用于我的shell:

for ((j=0; j<=24; j++))
do > $j.json
done
Run Code Online (Sandbox Code Playgroud)

但有以下通知:

SC2039在POSIX sh中,循环算术未定义.

我想知道POSIX中的等价物是什么,以免在其他系统上遇到问题.

Joh*_*iss 7

另一种应该在 POSIX shell 中工作的方法:

for j in $(seq 0 24); do
    ...
done
Run Code Online (Sandbox Code Playgroud)

  • *如果*您有非 POSIX `seq`。 (13认同)
  • 由于 seq 不是 POSIX,因此您需要包含 `seq() { j=$1;while [ $j -le $2 ]; 回显 $j; j=$(( j + 1 )); 完毕; }` (2认同)

Tom*_*ech 6

我想符合标准的方式是这样的:

j=0
while [ $j -le 24 ]; do
    true > "$j.json"
    j=$(( j + 1 ))
done
Run Code Online (Sandbox Code Playgroud)

  • 是的,POSIX调用`((``对于算法一个shell扩展在http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_01(否则它将是子shell中的子shell). (2认同)