我正在计划一个脚本来管理我的Linux系统的某些部分,我正在决定是否要使用bash或python.
我更喜欢将此作为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中有一个简单的方法吗?
感谢大家.
在 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)