簡體   English   中英

如何替換 bash 中字符串內的變量

[英]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.

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