如何在ksh中使用for循环遍历一个简单的整数范围?
例如,我的脚本目前正在执行此操作...
for i in 1 2 3 4 5 6 7
do
#stuff
done
Run Code Online (Sandbox Code Playgroud)
...但是我想将范围扩展到7以上.有更好的语法吗?
mar*_*ton 37
大括号?
for i in {1..7}
do
#stuff
done
Run Code Online (Sandbox Code Playgroud)
Lan*_*ing 15
循环?
while [[ $i -lt 1000 ]] ; do
# stuff
(( i += 1 ))
done
Run Code Online (Sandbox Code Playgroud)
Pau*_*ce. 11
ksh93,Bash和zsh都理解类C for
循环语法:
for ((i=1; i<=9; i++))
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
不幸的是,虽然ksh和zsh理解带有常量和变量的大括号范围语法,但Bash只处理常量(包括Bash 4).
小智 8
在OpenBSD上,使用jot:
for i in `jot 10`; do echo $i ; done;
Run Code Online (Sandbox Code Playgroud)
小智 5
seq - 但仅在 linux 上可用。
for i in `seq 1 10`
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
seq 还有其他选项。但其他解决方案非常好,更重要的是可移植。谢谢
小智 5
以下内容适用于AIX/Linux/Solaris ksh.
#!/bin/ksh
d=100
while (( $d < 200 ))
do
echo "hdisk$d"
(( d=$d+1 ))
done
Run Code Online (Sandbox Code Playgroud)
可选择如果你想填充到5个地方,即00100 .. 00199你可以开始:
#!/bin/ksh
typeset -Z5 d
Run Code Online (Sandbox Code Playgroud)
斯科特