Bash 如何在关联数组键中存储变量值
我想知道如何将变量值存储到键中 因此,当访问键时,它将输出键+变量值 当我创建一个关联数组并在其中插入一个变量并回显键时,它会输出变量名而不是变量值。我如何让bash的解释器正确地解析它 尝试 “${varaible}” ${variable} “$variable” $variableBash 如何在关联数组键中存储变量值,bash,variables,associative-array,Bash,Variables,Associative Array,我想知道如何将变量值存储到键中 因此,当访问键时,它将输出键+变量值 当我创建一个关联数组并在其中插入一个变量并回显键时,它会输出变量名而不是变量值。我如何让bash的解释器正确地解析它 尝试 “${varaible}” ${variable} “$variable” $variable variable="some string" declare -A array array=( ['some code ${variable}']="keyvalue" ['${variable} some
variable="some string"
declare -A array
array=(
['some code ${variable}']="keyvalue"
['${variable} some more code']="keyvalue2"
['and even some more code ${variable}']="keyvalue3"
)
for i in "${!array[@]}"
do
key=$i
value=${array[$i]}
echo "$key : $value"
done
代码输出:
and even some more code ${variable} : keyvalue3
我正在努力实现以下输出:
and even some more code some string : keyvalue3
单引号不展开变量,双引号展开变量。许多人认为这是邪恶的,请尝试
eval echo“$key:$value”
。如果您无法控制${variable}
的值设置,则可能会很危险。祝你好运。单引号不能扩展变量,双引号可以。许多人认为这是邪恶的,请尝试eval echo“$key:$value”
。如果您无法控制${variable}
的值设置,则可能会很危险。祝你好运。问题是单引号中变量的使用,尽管如此。是的,我需要它在键的单引号内输出变量的值。@JakeLeroy您不能在单引号内输出变量的值,因为在单引号内,$符号不被解释为变量替换,而是被解释为文字“$”。@YuriGinsburg所以使用两个数组可能是最有效的选择?@JakeLeroy不是当然,你为什么需要单引号。但在您的示例中,将单引号替换为双引号将导致所需的结果。更多的代码:keyvalue2,甚至更多的代码:keyvalue3一些代码:keyvalue3我认为没有必要有两个数组。请注意,单引号用于不替换以$开头的字符串中的变量值问题中的问题是单引号中变量的使用,尽管如此。是的,我需要它在键的单引号内输出变量的值。@JakeLeroy您不能在单引号内输出变量的值,因为在单引号内,$符号不被解释为变量替换,而是被解释为文字“$”。@YuriGinsburg所以使用两个数组可能是最有效的选择?@JakeLeroy不是当然,你为什么需要单引号。但在您的示例中,将单引号替换为双引号将导致所需的结果。更多的代码:keyvalue2,甚至更多的代码:keyvalue3一些代码:keyvalue3我认为没有必要有两个数组。请注意,单引号用于表示不替换以开头的字符串中的变量值$
#!/bin/bash
variable="some string"
declare -A array
array['foo']="keyvalue"
array['bar']="keyvalue2"
array[$variable]="keyvalue3"
for i in "${!array[@]}"
do
key=$i
value=${array[$i]}
echo "$key : $value"
done