LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1492|回复: 5

如何使用循环给数组赋值?

[复制链接]
发表于 2009-10-17 19:06:52 | 显示全部楼层 |阅读模式
使用csh,需要给一个数组赋值,使得数组的值为:

000 001 002 003 。。。 999

包括前面的0

网上有两种方法:

1。 seq -s " " -w 0 999

这种方法只能输出序列到屏幕,不知如何把值存入数组。


2。 for i in {0..1}{0..7}{0..9}; do echo $i; done

但是好像csh下不能用。。。

本人乃一新手,请大家指点, 谢谢!!!
发表于 2009-10-17 19:17:18 | 显示全部楼层
Post by samggyy;2037424
使用csh,需要给一个数组赋值,使得数组的值为:

000 001 002 003 。。。 999

包括前面的0

网上有两种方法:

1。 seq -s " " -w 0 999

这种方法只能输出序列到屏幕,不知如何把值存入数组。


2。 for i in {0..1}{0..7}{0..9}; do echo $i; done

但是好像csh下不能用。。。

本人乃一新手,请大家指点, 谢谢!!!

1) a=($( seq -s " " -w 0 999  )  )    不好意思,这个不合题意

2)read,重定向$( seq -s " " -w 0 999  ),查顶置的手册。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-17 21:56:13 | 显示全部楼层
怎么用read,请指点,谢谢!
回复 支持 反对

使用道具 举报

发表于 2009-10-17 23:34:29 | 显示全部楼层
1)2楼的a已经是一个数组。只是没有用循环的方法。

2)如果不怕麻烦,可以这样:
b="000"

for ((i=0;i<1000;i++))
do
c=$((3-${#i}))   
# ${#i}是i的长度,c=3-i的长度 i=0--9 c=2,i=10---99,c=1,i=100-999,c=0
b1=${b:0c}    # b1就是前导的0字符串,c个0
a=${b1}${i}
done
方法很多。也可以考虑字符串替换。
3)
i=0
for s in $( seq -s " " -w 0 999 )   
do
a=$s
echo ${a}
i=$((i+1))
done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-18 02:13:29 | 显示全部楼层
不能用,代码是用csh写的,


代码为:
#!/bin/csh -fx

a=($(seq -s " " -w 0 179))
echo $a

错误为:
Illegal variable name.


不可以改#!/bin/csh -fx,还有别的代码。也无法用for只能使用foreach,请指点,谢谢!
回复 支持 反对

使用道具 举报

发表于 2009-10-18 07:16:48 | 显示全部楼层
1) 我没有用过csh,你看看csh的数组是如何赋值的。
用`seq -s " " -w 0 199` 代$(seq -s " " -w 0 199)试试。是`           `不是 ‘                  ’。
用echo ${a[@]}  看看会不会出错.
出错的可能就是这两个地方。
2)for 结构与foreach的结构差别不大,自己改正试试。用while结构也可以实现。
3)read -r -a a<<<`seq -s " " -w 0 199`
4)echo `seq -s " " -w 0 199` >1.txt  #1.txt是写到硬盘上的文件
   read -r -a a<1.txt

注:用echo ${a[@]}输出一个数组,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表