红联Linux门户
Linux帮助

关于 for 循环的问题

发布时间:2010-04-06 17:31:58来源:红联作者:wewe-b
以前曾见过一个脚本,其中内容:[code]for n in {2..254}
do
echo 192.168.0.$n
....
done[/code]好像是将变量 $n 从 2 开始递加1循环到 254 的。

但我用的每次都是 192.168.0.{2..254} 结果。将 n 变成字符串 {2..254} 了,而不是循环。

请问 Linux 的 for 能像 Windows CMD 中的 for 那样实现递加循环吗?
文章评论

共有 10 条评论

  1. iamxzg 于 2010-05-07 12:31:44发表:

    楼上正解

  2. blue7590 于 2010-05-07 10:01:04发表:

    for ((i=2; i<254; i++))
    这个感觉简单多了哦

  3. chengjc 于 2010-04-07 11:48:58发表:

    恩,受教了

  4. wewe-b 于 2010-04-07 11:28:06发表:

    引用:
    for ((i=2; i<254; i++)); do echo 192.168.0.$i; done
    alick 发表于 2010-4-6 22:47


    感谢赐教。学习了。

  5. luweifox 于 2010-04-07 02:24:50发表:

    任务的.......

  6. luweifox 于 2010-04-07 02:24:37发表:

    任务的...

  7. alick 于 2010-04-06 22:47:09发表:

    [code]for ((i=2; i<254; i++)); do echo 192.168.0.$i; done[/code]同楼上,这是C的风格

  8. duo2752 于 2010-04-06 19:38:28发表:

    好像用c语言的for形式也可以,自己也可以定义函数的,这一点很好玩。

  9. wewe-b 于 2010-04-06 19:21:17发表:

    2# acrofox

    感谢您的指点。从您的例子中了解了 seq 命令。
    真是 shell 的问题。换个 bash 就好了。谢谢!

  10. acrofox 于 2010-04-06 17:41:04发表:

    跟你用的 shell 有关,如果是 bash 或 zsh,是没问题的,如果是 born shell 或 dash,则不会扩展。
    要写兼容 born shell 的脚本,可以用 seq,或者用 while 循环和 expr 表达式。用 seq 的例子是:[code]for n in `seq 2 254; do
    echo cho 192.168.0.$n
    done[/code]