簡體   English   中英

在 Bash 中為所有數組元素添加前綴

[英]Adding a prefix to all array elements in Bash

我將命令行參數存儲在數組變量中。 (這對我來說是必要的)。 我想用一個通過變量的字符串作為所有數組值的前綴。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM