我是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是否不同?是不是数组?
我确信我在这里遗漏了一些非常微不足道的事情,非常感谢帮助。
由于
阿斯温
答案 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))
会做你想做的事。