在Bash中的某个索引处插入一个元素
我在 bash 中有一个数组,声明为
string='var1/var2/var3';
IFS='/' read -r -a array <<< $string
所以数组是 ["var1", "var2", "var3"]
我想在指定的索引处添加一个元素,然后移动已经存在的其余元素。
所以结果数组变成
["var1", "newVar", "var2", "var3"]
我一直在尝试使用和循环来做到这一点,但我觉得有一些更好的“bash”方式来做到这一点。数组可能不是固定长度,因此它需要是动态的。
回答
你可以试试这个:
declare -a arr=("var1" "var2" "var3")
i=1
arr=("${arr[@]:0:$i}" 'new' "${arr[@]:$i}")
echo "${arr[@]}"
结果将是:
var1 new var2 var3
更多细节:如何在 Bash 中对数组进行切片
- Note that the offset and length parts of `${var:offset:length}` expansion are arithmetic, so the `$` is not strictly required there: `${arr[@]:i}` etc