如何将"12345"拆分成"1 2 3 4 5"这样的数组?

sh/bash/dash/ksh/zsh等Shell脚本
回复
xkowen
帖子: 6
注册时间: 2010-12-08 22:22
送出感谢: 0
接收感谢: 0

如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#1

帖子 xkowen » 2011-05-05 22:46

小弟初学,怎么将"12345"拆分成"1 2 3 4 5"这样的数组?有哪些方法?谢谢了。
例如:将a=12345,在脚本文件中拆分成b=(1 2 3 4 5)。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#2

帖子 eexpress » 2011-05-06 8:48

拆开了,也不就是数组。
shell/bash可没自动类型转换。
● 鸣学
pangding
帖子: 48
注册时间: 2011-03-01 23:14
送出感谢: 5 次
接收感谢: 0

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#3

帖子 pangding » 2011-05-06 10:39

嗯。而且不太清楚楼主拆开要做什么。
你可以用 ${a:0:1} ${a:1:1} 的方式来引用 a 的各个位。
${#a} 可以得到 a 串的长度。
jonef
帖子: 12
注册时间: 2007-01-02 4:09
送出感谢: 0
接收感谢: 0

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#4

帖子 jonef » 2011-05-06 18:00

a="stringwithoutspace"

方法1.

用sed把给每个字符后加个空格然后构建一个数组:

b=($(echo $s | sed 's/./ &/g;s/^ //'))

方法2.

利用seq和3楼所说的方法构建一个数组:)
zjfcctv
帖子: 18
注册时间: 2009-03-29 18:15
送出感谢: 0
接收感谢: 0

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#5

帖子 zjfcctv » 2011-05-07 9:02

perl -e '@array=split(//, "12345");print join(" ", @array)'
fnan
帖子: 919
注册时间: 2009-07-01 22:04
送出感谢: 0
接收感谢: 13 次

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#6

帖子 fnan » 2011-05-08 22:35

或者:
b=($(echo $a|grep -o '.'|xargs))
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
xkowen
帖子: 6
注册时间: 2010-12-08 22:22
送出感谢: 0
接收感谢: 0

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#7

帖子 xkowen » 2011-05-09 9:31

偶起初使用的方法与3楼一样,不过觉得4、6楼的方法更好。如果是使用awk,有该怎么差分呢?
fnan
帖子: 919
注册时间: 2009-07-01 22:04
送出感谢: 0
接收感谢: 13 次

Re: 如何将"12345"拆分成"1 2 3 4 5"这样的数组?

#8

帖子 fnan » 2011-05-09 22:55

echo $a|awk '{split($0,b,"");for (i in b) print b}'
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
回复

回到 “Shell脚本”