相关疑难解决方法(0)

Bash中的多维数组

我正在计划一个脚本来管理我的Linux系统的某些部分,我正在决定是否要使用.

我更喜欢将此作为Bash脚本,因为命令更容易,但真正的决定因素是配置.我需要能够在配置文件中存储多维数组,以告诉脚本如何处理自身.使用bash在配置文件中存储简单的key = value对很容易,但我能想到做多维数组的唯一方法是使用两层解析引擎,类似于

array=&d1|v1;v2;v3&d2|v1;v2;v3
Run Code Online (Sandbox Code Playgroud)

但是marshall/unmarshall代码可能会成为一只熊,而且对于下一个必须管理这个问题的可怜的人来说,它远非用户友好.如果我不能轻易地在bash中执行此操作,我只需将配置写入xml文件并在python中编写脚本.

在bash中有一个简单的方法吗?

感谢大家.

arrays bash shell multidimensional-array

44
推荐指数
6
解决办法
15万
查看次数

namerefs (declare -n) 可以与 bash 中的数组一起使用吗?当它说声明 -n 不能应用于数组时,文档是什么意思?

在 stackoverflow 的另一个问题中,我询问了如何将数组传递给函数。一个答案向我推荐了以前的答案。一个答案表明,使用 -n 选项声明,引用,对于将数组传递给函数很有用,如下所示,

declare -a array=( 1 2 )

function array_pass_by_reference_func() {
  local -n aug=${1:-dummy}
  echo "pass by reference : array[0] = ${aug[0]}"
  echo "pass by reference : array[1] = ${aug[1]}"
  echo "pass by reference : array = ${aug[@]}"
}

# execute an example function above
array_pass_by_reference_func "array"

# output
pass by reference : array[0] = 1
pass by reference : array[1] = 2
pass by reference : array = 1 2
Run Code Online (Sandbox Code Playgroud)

它看起来运作良好。我的问题是关于 bash 手册中声明 -n 的指令,

declare …
Run Code Online (Sandbox Code Playgroud)

bash

4
推荐指数
1
解决办法
1927
查看次数

标签 统计

bash ×2

arrays ×1

multidimensional-array ×1

shell ×1