我在Bash中有一个数组,每个元素都是一个字符串。我怎样才能追加另一个字符串到每个元素?在Java中,代码如下所示:如何追加一个字符串到Bash数组的每个元素?
for (int i=0; i<array.length; i++)
{
array[i].append("content");
}
我在Bash中有一个数组,每个元素都是一个字符串。我怎样才能追加另一个字符串到每个元素?在Java中,代码如下所示:如何追加一个字符串到Bash数组的每个元素?
for (int i=0; i<array.length; i++)
{
array[i].append("content");
}
测试,它的工作原理:
array=(a b c d e)
cnt=${#array[@]}
for ((i=0;i<cnt;i++)); do
array[i]="${array[i]}$i"
echo "${array[i]}"
done
生产:
a0
b1
c2
d3
e4
编辑:array
的声明可以缩短为
array=({a..e})
为了帮助您理解在bash中的阵列及其语法reference是一个好的开始。另外我建议你bash-hackers的解释。
您传递数组的长度作为赋值的索引。长度是基于1的,并且数组是基于0的索引,所以通过传递长度告诉bash将数值分配给数组中最后一个之后的插槽。要获得数组的长度,可以使用这个${array[@]}
语法。
declare -a array
array[${#array[@]}]=1
array[${#array[@]}]=2
array[${#array[@]}]=3
array[${#array[@]}]=4
array[${#array[@]}]=5
echo ${array[@]}
主要生产
1 2 3 4 5
很好的答案。令人遗憾的是,所需的语法(罪恶税)不能充分感叹 – sehe
只是重读这个问题,并意识到我回答了一些稍微不同的东西。我会在这里留下这个答案,因为它仍然有一些关于bash中数组的有价值的信息。 –
'array + =(1)'; '阵列+ =(2)'; ...'array + =(etc)' –
即使没有在Bash中循环,也可以向每个数组项添加一个字符串!
# cf. http://codesnippets.joyent.com/posts/show/1826
array=(a b c d e)
array=("${array[@]/%/_content}")
printf '%s\n' "${array[@]}"
好的!这不是问题的确切答案,而是短期竞争的毋庸置疑的赢家! +1 – Rajish
Joyent链接已损坏,请参阅http://web.archive.org/web/20101114051536/http://codesnippets.joyent.com/posts/show/1826(该链接的Wayback Machine)。 –
注意:这确实在内部循环。 –
字符串是不可变的Java和没有追加方法。 '不能找到符号 符号:方法追加(java.lang.String) location:class java.lang.String \t \t array [i] .append(“content”);'简化的for-loop应该慢 - after 5年 - 也被采纳。 'for(String s:array)System.out.println(s +“content”);' –