Shell变量单引号与双引号

Shell变量单引号与双引号教程

在定义 Shell 变量时,如果变量中包含空格,我们可以使用单引号或者双引号,但单引号与双引号是有区别的。

Shell变量单引号与双引号区别详解

以单引号 ' ' 包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。

以双引号 " " 包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。

如果变量的内容是数字,那么可以不加引号;如果真的需要原样输出就加单引号;其他没有特别要求的字符串等最好都加上双引号,定义变量时加双引号是最常见的使用场景。

Shell变量单引号与双引号区别

我们直接在终端中,编写 Shell 脚本,我们直接在终端定义一个 Shell 变量,具体代码如下:

url=www.haicoder.net name=haicoder

现在,我们使用 echo,获取变量的值,具体命令如下:

echo name is '$haicoder' and i love "$url"

运行后,终端输出如下:

06_Shell变量单引号与双引号区别.png

我们可以看到,我们使用单引号获取变量的值,变量的值并没有被获取到,而是原样输出了,即输出了 $haicoder,而不是该变量的值 haicoder

而我们使用双引号的字符串,输出了变量的值,而不是原样输出的,即 $url 被解析为了 www.haicoder.net

Shell变量单引号与双引号总结

以单引号 ' ' 包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。

以双引号 " " 包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。