[英]How to replace a variable inside a string in bash
我有一個字符串環境變量,如下所示
data={\"data\":{\"sources\":\"some value\", \"destination\":\"some other value\"}}
我想在這個環境變量中包含日期(比如 YEAR)。 也就是說,我有另一個名為YEAR
(bash: YEAR=2019) 的環境變量,我想在data
中使用這個變量 (YEAR)。 這是我需要做的
data={\"data\":{\"sources\":\"some value ${YEAR}\", \"destination\":\"some other value\"}}
但它不起作用,我怎樣才能讓它起作用?
使用jq
:
$ echo "$data" | jq --argjson y "$YEAR" '.data.sources += " \($y)"'
{
"data": {
"sources": "some value 2019",
"destination": "some other value"
}
}
或者
# Note the -c argument to compress the data to a single line
$ data=$(echo "$data" | jq -c --argjson y "$YEAR" '.data.sources += " \($y)"')
$ echo "$data"
{"data":{"sources":"some value 2019","destination":"some other value"}}
或者,使用這里的文檔,最大限度地減少轉義引號的需要,同時仍然支持變量替換:
data=$(cat <<DATA
"data": {
"sources":"some value ${YEAR}",
"destination":"some other value"
}
}
DATA
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.