3

我仍然在 Snow Leopard 上(我知道......)所以如果这在 OS/X 的更高版本之一中得到修复,请原谅,但我想做标准的“seq”又名:

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

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

4

4 回答 4

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
于 2013-11-20T16:29:31.257 回答
2

在 Snow Leopard 中,您可以使用该jot命令,该命令可以生成类似的顺序数据seq(以及更多信息,请参阅手册页了解详细信息)。

$ jot 5
1
2
3
4
5
$ jot 3 5
5
6
7
于 2013-11-20T16:47:46.437 回答
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 标准的外壳:

while [ $(( ( i += 1 ) <= 100 )) -ne 0 ]; do 
  ...
done

bash 还支持诸如 的扩展{0..100},但不支持将变量作为端点,而 for 循环语法更灵活。

于 2013-11-20T16:51:01.673 回答
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
}

这并不难。

于 2014-04-09T20:16:07.590 回答