相关疑难解决方法(0)

如何在没有循环的情况下更改bash数组元素的值

array=(a b c d)
Run Code Online (Sandbox Code Playgroud)

我想在数组的每个元素之前添加一个字符,以便拥有它

array=(^a ^b ^c ^d)
Run Code Online (Sandbox Code Playgroud)

一种简单的方法是循环数组元素并逐个更改值

for i in "${#array[@]}"
do
    array[i]="^"array[i]
done
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有任何方法可以在没有循环数组的情况下做同样的事情,因为我必须对所有元素执行相同的指令.

提前致谢.

arrays bash

44
推荐指数
2
解决办法
2万
查看次数

bash数组的前缀和后缀元素

我想在bash中预先修复一个数组,类似于大括号扩展.

说我有一个bash数组

ARRAY=( one two three )
Run Code Online (Sandbox Code Playgroud)

我想能够像下面的大括号扩展一样预先修改它

echo prefix_{one,two,three}_suffix
Run Code Online (Sandbox Code Playgroud)

我能找到的最好用的是使用bash regex来添加前缀或后缀

echo ${ARRAY[@]/#/prefix_}
echo ${ARRAY[@]/%/_suffix}
Run Code Online (Sandbox Code Playgroud)

但我找不到任何关于如何同时做两件事的事情.我可能会使用正则表达式捕获并执行类似的操作

echo ${ARRAY[@]/.*/prefix_$1_suffix}
Run Code Online (Sandbox Code Playgroud)

但似乎bash变量正则表达式替换中不支持捕获.我还可以存储一个临时数组变量

PRE=(${ARRAY[@]/#/prefix_})
echo ${PRE[@]/%/_suffix}
Run Code Online (Sandbox Code Playgroud)

这可能是我能想到的最好的,但它似乎仍然低于标准杆.最后一种选择是使用类似于的for循环

EXPANDED=""
for E in ${ARRAY[@]}; do
    EXPANDED="prefix_${E}_suffix $EXPANDED"
done
echo $EXPANDED
Run Code Online (Sandbox Code Playgroud)

但这太丑了.如果我想要前缀后缀或数组元素的空格,我也不知道如何让它工作.

regex arrays bash

26
推荐指数
3
解决办法
8609
查看次数

标签 统计

arrays ×2

bash ×2

regex ×1