USER_UID=$1
echo 'generate_token("$USER_UID")'
我希望输出像
generate_token("1234567")
我尝试了多种方法,但都不起作用。它只打印没有值的同一行generate_jwt("$USER_UID">
当您使用单引号时,它会导致shell保留引号内每个字符的文字值。这意味着$
将被视为文字$
字符。
你应该使用双引号:
USER_UID="$1"
echo "generate_token("$USER_UID")"
从bash手册页,在下引用部分:
双引号中的封闭字符保留引号内所有字符的文字值,但$除外",,,当启用历史扩展时,!.
有关POSIX引用的详细信息,请参阅此处。
交互式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")