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

标签 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 是否不同? b 不是数组吗?

我确定我在这里遗漏了一些非常微不足道的东西,非常感谢您的帮助。

谢谢

阿什温

最佳答案

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

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

b=$(seq 1 1 10) 不会产生数组。

关于bash - 在 shell 中使用 seq 的数字序列的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23473386/

相关文章:

bash - 使用 awk 将大文件拆分为具有定义数量的多行记录的 block

linux - 删除存储库中最旧的文件

linux - 运行存储过程的简单 bash Linux 脚本

generics - F# 中序列表达式中的类型推断

r - 根据几列生成一系列新行

scala .seq 与 .toSeq

string - 空格/制表符/换行符不敏感比较

bash - 我如何比较bash中的 float

python - 将 bash 脚本拆分为单独的命令并一一运行它们

shell - 是否可以在 btrfs 文件系统上获取文件的压缩和未压缩大小?