如何在OS / X中获得'seq'命令行功能?

时间:2013-11-20 16:24:41

标签: macos shell gnu sequences seq

我还在使用Snow Leopard(我知道......)如果在OS / X的某个更高版本中修复此问题,请原谅,但我想做标准的“seq”又名:

for i in `seq 1 100` ; do
  cat /whatever > $i.txt ;
done

我认为安装GNU工具会做到这一点,但显然不是。

4 个答案:

答案 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
}

这并不难。