我还在使用Snow Leopard(我知道......)如果在OS / X的某个更高版本中修复此问题,请原谅,但我想做标准的“seq”又名:
for i in `seq 1 100` ; do
cat /whatever > $i.txt ;
done
我认为安装GNU工具会做到这一点,但显然不是。
答案 0 :(得分:3)
在我的Mac上这两项工作(OS X 10.8.5)
Andreas-Wederbrands-MacBook-Pro:~ raven$ for i in {1..10}; do echo $i; done
1
2
3
4
5
6
7
8
9
10
Andreas-Wederbrands-MacBook-Pro:~ raven$ for i in `seq 1 10`; do echo $i; done
1
2
3
4
5
6
7
8
9
10
答案 1 :(得分:2)
在Snow Leopard中,您可以使用jot
命令,该命令可以生成seq
等序列数据(有关详细信息,请参阅手册页)。
$ jot 5
1
2
3
4
5
$ jot 3 5
5
6
7
答案 2 :(得分:2)
不需要seq
等工具 - bash(如ksh和zsh)内置语法:
# bash 3.x+
for ((i=0; i<100; i++)); do
...
done
...或者,对于bash 2.04 +,zsh和ksh93:
i=0; while ((i++ <= 100)); do
...
done
...或者,对于任何符合POSIX标准的shell:
while [ $(( ( i += 1 ) <= 100 )) -ne 0 ]; do
...
done
bash还支持{0..100}
等扩展,但不支持变量作为端点,而for循环语法更灵活。
答案 3 :(得分:0)
或者,只需将其添加到您的bash个人资料中:
function seq {
if [ $1 > $2 ] ; then
for ((i=$1; i<=$2; i++))
do echo $i
done
else
for ((i=$1; i>=$2; i--))
do echo $i
done
fi
}
这并不难。