gpt4 book ai didi

arrays - 为 Bash 中的所有数组元素添加前缀

转载 作者:太空狗 更新时间:2023-10-29 12:09:44 25 4
gpt4 key购买 nike

我将命令行参数存储在一个数组变量中。 (这对我来说是必要的)。我想在所有数组值前加上一个通过变量传递的字符串。

PREFIX="rajiv"

services=$( echo $* | tr -d '/' )

echo "${services[@]/#/$PREFIX-}"

我得到了这个输出。

> ./script.sh webserver wistudio
rajiv-webserver wistudio

但我期待这个输出。

rajiv-webserver rajiv-wistudio

最佳答案

你的数组初始化错误。将其更改为:

services=($(echo $* | tr -d '/'))

如果没有外层的()services会变成一个字符串,参数扩展"${services[@]/#/$PREFIX-}"$PREFIX- 添加到您的字符串中。

在这种情况下,declare -p 可用于检查变量的内容。在这种情况下,declare -p services 应该向您展示:

declare -a services=([0]="webserver" [1]="wistudio") # it is an array!

不是

declare -- services="webserver wistudio"             # it is a plain string

关于arrays - 为 Bash 中的所有数组元素添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49092411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com