【发布时间】:2019-02-25 13:28:27
【问题描述】:
从阅读 bc 的手册页来看,bc 似乎可以接受简单的变量,也可以接受数组作为输入。
但是,如果我尝试添加两个数组,我只会得到一个元素作为输出
a=(1 2 3)
b=(10 11 12)
c=`echo "$a + $b" | bc`
那么 c 只包含 11。如果有办法让 bc 对数组中的所有元素进行操作以产生 (11 13 15) 作为输出?还是我需要做一个循环?
【问题讨论】:
-
您的分配只会永远使
c成为一个字符串。请注意,当a是一个数组时,"$a"隐含指向"${a[0]}"。 -
bc 不是 bash 的一部分,因此它无法读取内部 bash 数据结构——bash 和 bc 之间的所有通信都是通过字符串的生成和解析来实现的。因此,
echo "$a + $b"正在生成单个字符串; bc 看不到原始变量,也无法知道它们的值是什么。 -
...因此,bc 对数组的支持与 Python 或 awk 支持数组的意义相同——它们支持,但这些数组与 bash 没有任何关系数组。