【发布时间】:2021-11-02 21:24:48
【问题描述】:
bash编程中declare -a matrix和declare -A matrix有什么区别?
declare -A matrix
declare -a res
read_matrix() {
local i=0
local line
local j
while read -r line; do
j=0
IFS=,
for v in $(echo "$line")
do
matrix[$i,$j]="$v"
j=$((j+1))
done
i=$((i+1))
done
}
这是 bash 脚本中的一段,该脚本使用高斯消元法计算线性方程组的解。
【问题讨论】:
-
运行
help declare。 -
顺便说一句,
for v in $(echo "$line")的意义何在?如果你想用逗号分隔你的行,有更好(更安全,更少错误)的方法来做到这一点;例如:IFS=, read -r -a pieces <<<"$line"-- 或者首先将您的while read -r line; do更改为while IFS=, read -r -a pieces; do,然后您可以运行for v in "${pieces[@]}"; do来迭代各个部分。 -
菲·查尔斯。语言。 ;-)
-
但即使您确实想使用分词来打破逗号,
for v in $line; do也是比for v in $(echo "$line"); do更有效的方法(而且永远- 稍微少一些错误,只要它减少了基于如何主动配置echo的行为差异......尽管仍然比read -a方法有更多错误) -
@CharlesDuffy 我不知道
help declare。谢谢,这很有帮助!我最初以不同的方式编写了这段代码。然后我被告知使用内部字段分隔符 (IFS)。
标签: bash matrix declaration