如何在shell脚本中用双引号传递变量值

时间:2021-01-24 16:10:42

标签: bash shell

USER_UID=$1
echo 'generate_token("$USER_UID")'

我想要这样的输出

generate_token("1234567")

我尝试了多种方法,但没有奏效。它只是打印没有值的同一行 generate_jwt("$USER_UID")

1 个答案:

答案 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")
相关问题