如何执行字符串替换以在 zsh 中构造 json 字符串?
How to perform string substitution to construct a json string in zsh?
这是我的功能
function print_doc_json() {
docId=
echo '{ ":d": { "S": "$(docId)" }}'
}
我希望 print_doc_json abc123
的输出为 { ":d": { "S": "abc123" }}
然而结果是 { ":d": { "S": "$(docId)" }}
。 DocId
未被替换。
如何在已经包含在一对引号中的字符串中进行字符串替换?
有两个错误。首先,变量替换是这样的:${docId}
,不是这样的:$(docId)
其次,如果您用单引号将字符串括起来 ('
),则不会在其中执行任何变量替换 - 您必须使用双引号 ("
)。请注意,在这种情况下,您必须转义要打印的双引号:
function print_doc_json() {
docId=
echo "{ \":d\": { \"S\": \"${docId}\" }}"
}
或者你可以在外面使用单引号,但是你也必须在外面做替换:
function print_doc_json() {
docId=
echo '{ ":d": { "S": "'${docId}'" }}'
}
这是三个连接的字符串:'{ ":d": { "S": "'
、${docId}
和 '" }}'
。
这是我的功能
function print_doc_json() {
docId=
echo '{ ":d": { "S": "$(docId)" }}'
}
我希望 print_doc_json abc123
的输出为 { ":d": { "S": "abc123" }}
然而结果是 { ":d": { "S": "$(docId)" }}
。 DocId
未被替换。
如何在已经包含在一对引号中的字符串中进行字符串替换?
有两个错误。首先,变量替换是这样的:${docId}
,不是这样的:$(docId)
其次,如果您用单引号将字符串括起来 ('
),则不会在其中执行任何变量替换 - 您必须使用双引号 ("
)。请注意,在这种情况下,您必须转义要打印的双引号:
function print_doc_json() {
docId=
echo "{ \":d\": { \"S\": \"${docId}\" }}"
}
或者你可以在外面使用单引号,但是你也必须在外面做替换:
function print_doc_json() {
docId=
echo '{ ":d": { "S": "'${docId}'" }}'
}
这是三个连接的字符串:'{ ":d": { "S": "'
、${docId}
和 '" }}'
。