shell中单引号、双引号、反引号的用法及区别

单引号

这个比较暴力,不管单引号里面有什么都原样输出,无视一切变量,所见即所得。如果要用来做字符比较和输出,注意不能输出变量,也不认识通配符,命令等。

even@ubuntu:~$ echo 'a$PATH --aa\*'
a$PATH --aa\*

双引号

双引号感觉就相对友好,如果内容中有变量、特殊转义符等,会先把变量、转义字符解析出结果,然后再输出最终内容。

even@ubuntu:~$ echo "a$PATH --aa\\*"
a/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ffmpeg/bin --aa\*

双引号里面也可以有命令,但要用反引号引一下,比如下面这样

even@ubuntu:~/test$ echo "`ls -l` a$PATH --aa\\*"
total 268
-rw-r--r-- 1 even even 259626 Oct 30 10:40 693fnet.log
-rw-r--r-- 1 even even    837 Aug 21 15:47 check4gnet.sh
drwxrwxr-x 2 even even   4096 Dec 12 03:09 python
drwxrwxr-x 3 even even   4096 Oct 12 16:58 wifidetect-openwrt a/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ffmpeg/bin --aa\*
even@ubuntu:~/test$ 

双引号中只有$ \ ` 不被忽略 其他的都会被忽略,比如*和?通配符。这个在做比较和运算的时候要特别注意。比如:

a="123"
b="12345"
if [[ $b == "$a*" ]]

这里结果就是false。

反引号

一般用于命令引用,命令的执行。
反引号是相对古老一点的用法,现在多用$()来执行命令。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值