我正在尝试向 bash 数组添加一个元素。我在看这问题并尝试遵循其建议。
这是我的代码:
selected_projects=()
for project_num in ${project_numbers[@]}; do
selected_project=${projects[$project_num]}
echo "selected project: $project_num $selected_project"
$selected_projects+="$selected_project"
done
当我这样做时,我收到一个错误:
第 88 行:+=someProject:未找到命令
我尝试了许多不同的替代方案,其中包含大量括号和美元符号,但我无法弄清楚我做错了什么以及应该做什么。有任何想法吗?
谢谢!
答案1
使用
selected_projects+="$selected_project"
代替
$selected_projects+="$selected_project
bash 中的变量赋值永远不会包含$
在变量名的开头。
答案2
selected_projects=()
$selected_projects+="$selected_project"
shell 中的变量赋值不使用$
左侧的符号,它仅在变量值扩展时使用。这包括附加+=
.你的其他任务是正确的。
此外,由于您已初始化selected_projects
为数组,因此您可能想这样使用它。要将值附加到数组,您还需要在附加赋值中使用括号。因此,这将添加一个新元素selected_projects
:
selected_projects+=("$selected_project")
如果没有括号,赋值就像对数组的无索引引用一样:它访问带有索引的元素0
。例如这打印foobar foobar
:
a=(); a+=foo; a+=bar; echo ${a[0]} $a