这是我的函数
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}
和'" }}'
。