USER_UID=$1
echo 'generate_token("$USER_UID")'
我想要这样的输出
generate_token("1234567")
我尝试了多种方法,但没有奏效。它只是打印没有值的同一行 generate_jwt("$USER_UID")
答案 0 :(得分:4)
当您使用单引号时,它会导致 shell 保留引号内每个字符的文字值。这意味着 $
将被视为文字 $
字符。
你应该使用双引号:
USER_UID="$1"
echo "generate_token(\"$USER_UID\")"
从 bash man page 的 引用 部分下:
<块引用>用双引号括起来的字符会保留引号内所有字符的字面值,$、`、\ 除外,并且,当启用历史扩展时,!。
有关引用的 POSIX 详细信息,请参阅 here。
交互式 shell 中的示例:
$ USER_UID='foo'
$ echo "generate_token(\"$USER_UID\")"
generate_token("foo")
如果 USER_UID
包含空格,这也适用:
$ USER_UID='var with spaces'
$ echo "generate_token(\"$USER_UID\")"
generate_token("var with spaces")