Bash中如何正确向含空格元素的列表追加元素?
Bash数组正确追加元素的方法
你当前的错误在于用list=$list" Oregon"的方式修改数组——bash会把数组变量当成普通字符串处理,取出数组的第一个元素和Oregon拼接,导致第一个元素变成Alabama Oregon,这就是输出不符合预期的原因。
下面是两种正确的数组追加方式:
方法一:使用+=运算符(推荐)
这是bash中追加数组元素最简洁的方式,支持带空格的元素:
list=(Alabama Alaska "New York") list+=("Oregon") # 括号和引号确保元素被正确识别为单个项 for state in "${list[@]}" do echo The next state is $state done
方法二:通过数组索引赋值
利用数组长度作为新元素的索引(bash数组索引从0开始,当前元素个数就是下一个元素的索引):
list=(Alabama Alaska "New York") list[${#list[@]}]="Oregon" # ${#list[@]}获取数组当前元素数量 for state in "${list[@]}" do echo The next state is $state done
运行上述任意一种脚本,都会得到你预期的输出:
The next state is Alabama The next state is Alaska The next state is New York The next state is Oregon
内容的提问来源于stack exchange,提问作者An old man in the sea.
相关产品推荐
相关产品推荐

