在shell中使用seq的数字序列的长度

时间:2014-05-05 13:11:29

标签: bash shell seq

我是shell脚本的新手,我正在尝试使用seq生成一系列数字的长度。

在此处的相关帖子的帮助下:How to find the array length in unix shell?我能够做到这一点 -

a=(1 2 3 4 5)
echo ${#a[@]}  #length of a
5              #length of a = 5 (This is fine !!)

然而,当我尝试使用seq ..

做类似的事情时
b=$(seq 1 1 10)
echo $b
1 2 3 4 5 6 7 8 9 10
echo ${#b[@]}
1              #the length of b is 1, while I expect it to be 10

为什么会这样?变量类型a和b是否不同?是不是数组?

我确信我在这里遗漏了一些非常微不足道的事情,非常感谢帮助。

由于

阿斯温

2 个答案:

答案 0 :(得分:8)

您需要将输出存储在数组中以查找数组的长度:

$ b=($(seq 1 1 10))
$ echo ${#b[@]}
10

b=$(seq 1 1 10)没有产生数组。

答案 1 :(得分:2)

尝试

echo ${b[0]}

它将是1 2 3 4 5 6 7 8 9 10,因为所有值都作为字符串存储在数组a的第一个元素中。

b=($(seq 1 1 10)) 

会做你想做的事。