当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : for能够使用数组来定义变量么吗?
帖子发表于 : 2017-07-17 20:56 

注册: 2015-12-23 16:20
帖子: 102
系统: ubuntu 16.04
送出感谢: 1
接收感谢: 0 次
如题,

刚刚写了一个脚本,

我自己没有找到任何的问题,

但是机器就是不按照预定的方式运行。

for i in [1,100]
do
echo $i
done

预定的结果是从1到100,

但是返回的其实是

[1,100]

这个令我很奇怪。

谁知道这个是怎么回事?

目前这个脚本已被我改装成

for ((i=1;i<=100;i++))
do
echo $i
done

并且运行完美。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: for能够使用数组来定义变量么吗?
帖子发表于 : 2017-07-17 21:53 
头像

注册: 2008-09-18 13:11
帖子: 2770
送出感谢: 1
接收感谢: 449
yubinalice 写道:
如题,

刚刚写了一个脚本,

我自己没有找到任何的问题,

但是机器就是不按照预定的方式运行。

for i in [1,100]
do
echo $i
done

预定的结果是从1到100,

但是返回的其实是

[1,100]

这个令我很奇怪。


我也觉得很奇怪,你连基本的shell语法都不会,想当然瞎写,还觉得没有任何问题,你哪里来的自信?
看懂了下面的你就知道为什么会返回[1,100]
代码:
       for name [ [ in [ word ... ] ] ; ] do list ; done
              The list of words following in is expanded, generating a list of items.  The variable name is set to each element of this
              list  in  turn,  and  list is executed each time.  If the in word is omitted, the for command executes list once for each
              positional parameter that is set (see PARAMETERS below).  The return status is the exit status of the last  command  that
              executes.   If the expansion of the items following in results in an empty list, no commands are executed, and the return
              status is 0.

看懂了下面的你就知道正确的写法是什么
代码:
       A sequence expression takes the form {x..y[..incr]}, where x and y are either  integers  or  single  characters,  and  incr,  an
       optional  increment,  is  an integer.  When integers are supplied, the expression expands to each number between x and y, inclu‐
       sive.  Supplied integers may be prefixed with 0 to force each term to have the same width.  When either x or  y  begins  with  a
       zero,  the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary.  When
       characters are supplied, the expression expands to each character lexicographically  between  x  and  y,  inclusive,  using  the
       default  C  locale.  Note that both x and y must be of the same type.  When the increment is supplied, it is used as the differ‐
       ence between each term.  The default increment is 1 or -1 as appropriate.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译