如何在zsh中执行字符串替换来构造json字符串

  • 本文关键字:字符串 替换 json 执行 zsh zsh
  • 更新时间 :
  • 英文 :


这是我的函数

function print_doc_json() {
docId=$1
echo '{ ":d": { "S": "$(docId)" }}'
}

我希望print_doc_json abc123的输出为{ ":d": { "S": "abc123" }}

然而,它以{ ":d": { "S": "$(docId)" }}的形式出现。DocId未被替换。

如何在已经包含在一对引号中的字符串中进行字符串替换?

有两个错误。首先,变量替换是这样完成的:${docId},而不是这样:$(docId)

其次,如果将字符串用单引号('(括起来,则内部不会执行变量替换——必须使用双引号("(。请注意,在这种情况下,您必须转义要打印的双引号:

function print_doc_json() {
docId=$1
echo "{ ":d": { "S": "${docId}" }}"
}

或者,您可以在外部使用单引号,但也必须在外部进行替换:

function print_doc_json() {
docId=$1
echo '{ ":d": { "S": "'${docId}'" }}'
}

这是三个串联的字符串:'{ ":d": { "S": "'${docId}'" }}'

最新更新