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

标签 arrays linux bash shell

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

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/

相关文章:

linux - Visual Studio 2015/2017 无法创建目录,mkdir 退出代码 : 1 on Raspberry

linux - Genymotion: segmentation fault (core dumped) genymotion

linux - 如何从 bash 脚本修改/etc/environment

linux - 如何为 mogrify 添加后缀 - imagemagick

php - 如何将路径目录作为参数发送到 php 脚本?

linux - 退出 bash 脚本而不终止 ssh 连接

javascript - 使用 lodash 方法返回新形式的数组

javascript - WebGL - 顶点着色器调用的变量数组大小

java - 写入已初始化的二维数组时出现异常

arrays - Mongodb - 将具有动态字段的映射转换为数组