有没有办法在单引号内打印变量内的值?

有没有办法在单引号内打印变量内的值?

考虑我已经设置了变量site并且需要由echoor打印printf,但是如果我使用单引号来写一些东西并且想要使用变量那么怎么办?

例子:

$ site=unix.stackexchange.com
$ echo "visit:$site"
visit:unix.stackexchange.com

但如果我使用单引号:

$ echo 'visit:$site'
visit:$site

那么我们知道这''是强引用并且不会扩展变量

我尝试过一些事情:

$ echo 'visit:"$site"'
visit:"$site"

但没有成功。所以,我正在寻找使用单引号打印变量内部值的方法

答案1

您不能在单引号中扩展变量。不过,您可以结束单引号并开始双引号:

echo 'visit:"'"$site"'"'

或者,您可以在双引号内反斜杠双引号:

echo "visit:\"$site\""

答案2

当您处理打印可变内容时,您应该坚持printf 代替 echo:

printf 'visit:%s\n' "$site"

无论 中的字符如何,都会输出visit:后跟 的内容$site和换行符$site

答案3

我假设你想要输出

visit:'unix.stackexchange.com'

尽管斯蒂芬的回答是危险的,它建议这种方法:

$ cat << EOF
> visit:'$site'
> EOF

答案4

当连接字符串和变量时,变量必须位于引号之外,因为引号之间的任何内容都将按字面打印。

echo 'visit:'$site

如果您想在变量后继续字符串,您可以执行相同的操作:

echo 'visit: '$site' rest of the sentence'

相关内容