在终端(bash)上输入
var=someValue
echo $var --> 1
echo "$var" --> 2
表格 1 和 2 我得到了相同的结果,那么它们之间有什么区别?
什么时候应该使用双引号,什么时候不应该使用双引号?
答案1
echo $var
和之间没有区别echo "$var"
。
然而对于其他命令(如ls
列出文件)可能会有很大差异。
在你的终端上尝试一下:
$ touch "File A"
$ var="File A"
$ ls $var
ls: cannot access 'File': No such file or directory
ls: cannot access 'A': No such file or directory
$ ls "$var"
File A
双引号"
告诉 Linux 将中间的所有内容视为单个实体。如果没有双引号,则其中的所有内容将被视为由空格划定的单独实体。
因此,第一个例子中$var
有两个不同的东西“文件”和“A”。
第二个例子中"$var"
是一件事"File A"
。
该echo
命令会自动将单个单词或多个单词(直到行尾)作为一个事物来处理。许多其他命令需要一个或多个事物。
答案2
当您将多行字符串存储在变量中并尝试回显它时,就会出现差异。
尝试这个:
$var="this is a
line of
code"
$ echo $var
this is a line of code
$ echo "$var"
this is a
line of
code