如何在bash中打印包含'$'的变量?

时间:2015-12-08 07:23:53

标签: bash shell

我正在编写一个bash脚本,其中包含一个名为“line”的变量,我想打印它的内容。 问题是“line”变量是一个包含'$'char。

的字符串

我的问题是如何打印“line”变量的值,而不用变量替换美元。

例如,如果“line”包含“a $#gz%^”,则此代码为:

 echo $line

将输出:

  

a0gz%^

如果我将'$ line'放在单引号中,它只会打印'$ line':

 echo '$line'
  

$线

希望你能够提供帮助。

2 个答案:

答案 0 :(得分:1)

将字符串赋值给变量时,必须引用该字符串:

line='a$#gz%^'

否则,$#会在分配之前展开。

要输出文字变量,请使用双引号

echo "$line"

起初看起来很混乱,但实际上很简单(至少是第一次近似):

  • string with $line in it - 绝不是你想要的,特别是如果它包含一个变量。如果没有变量,则确定,字符串只是字母和数字(如果希望扩展,则为模式字符)。扩展变量,拆分为单词,扩展文件名模式。
  • "string with $line in it" - 扩展变量,但不分词或扩展文件名模式
  • 'string with $line in it' - 文字字符串,只是撇号之间的字符

答案 1 :(得分:0)

  

您可以通过提供如下所示的转义序列将字符串存储在具有特殊字符的变量中 -

line="a\$#gz%^"

然后echo $line