Linux shell中各种引号的正确使用

在编程中脚本时,我们经常需要用到各种符号,比如说单引号" ,双引号""等等。下面我们通过一些例子来正确使用各种引号。

双引号

下面来看看官方的手册里面是怎么介绍的双引号的:

Double Quotes
Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of ‘KaTeX parse error: Undefined control sequence: \’ at position 10: ’, ‘`’, ‘\̲’̲, and, when his…’ and ‘’ retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘’, ‘"’, ‘\’, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. If enabled, history expansion will be performed unless an ‘!’ appearing in double quotes is escaped using a backslash. The backslash preceding the ‘!’ is not removed.
The special parameters ‘*’ and ‘@’ have special meaning when in double quotes (see Shell Parameter Expansion).

大概意思是说:大概意思是说:双引号中的信息会保留字面量,但是同时会对$,`,,这些符号做出特殊的解析。就是双引号中的变量和转义,和函数操作可以被正常解析出来。

实例

创建文件
在这里插入图片描述

这里可以看到双引号的作用是引用一个整体。上面的内容是,创建一个文件,空格代表文件名的一部分。

在Linux系统中,会把双引号中的内容当作是一个整体。

获取当前系统用户登录数量

在这里插入图片描述

账户登录输出结果为2,在双引号中 $ 符做出特殊的解析。who查看有哪些账户在什么时候登录计算机。wc命令可以自动统计数据的行数。我们使用管道将who和wc命令结合在一起使用。

当前系统进程变量

在这里插入图片描述

Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。

单引号

看看官方的手册里面是怎么介绍的单引号的:

Single Quotes:
Enclosing characters in single quotes (‘’’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash.

翻译出来就是:用单引号(’’’)括起字符可以保留引号中每个字符的字面值。单引号之间可能不会出现单引号,即使前面有反斜杠也是如此。

在这里插入图片描述

从上面的信息可以看,输入了三个单引号,或者两个单引号之间是一个带反斜杆的单引号。都会出现>的符号,意思是等待继续的输入。

实例

在shell中,#符号是特殊含义的,表示注释符号。在终端上输入echo #,没有内容显示。输出结果是空白。

在这里插入图片描述

而在终端上使用单引号,将#符号的特殊符号含义屏蔽掉。

在这里插入图片描述

在shell中$符号表示提前变量的特殊含义。比如:

在这里插入图片描述
使用单引号后$符号就变成了一个普通符号。

在这里插入图片描述

反引号

反引号的功能是命令替换,在反引号``中的内容通常是命令行,程序会优先执行反引号中的内容,并使用运行结果替换掉反引号处的内容。举个例子:

在这里插入图片描述

这行命令会先执行反引号中的命令 date,然后用 echo 命令打印出 date 命令的结果(与直接使用 date 命令效果一样)。

下面使用tar命令进行备份,使用``符号实现命令替换。把数据备份到当前目录下。

tar -czf date +%Y%m%d.tar.gz /var/log/

在这里插入图片描述

输出结果替换date命令本身的字符串,最后备份的文件名为20200528.tar.gz ,文件名中具体的时间根据执行命令时的计算机系统时间而定。

总结

写shell脚本的时候,如果不需要解析里面的内容,就使用单引号,反之,双引号。记住shell解析单引号和双引号的规则,是就近原则。以上是个人的一些总结,可能还不全面,如果有不正确的地方还望指正。

在这里插入图片描述

欢迎关注公众号【程序猿编码】,添加本人微信号(17865354792),回复:领取学习资料。或者回复:进入技术交流群。网盘资料有如下:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值