linux中双引号单引号和不加引号的区别吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux中双引号单引号和不加引号的区别吗相关的知识,希望对你有一定的参考价值。
双引号里可以识别变量单引号就是纯字符串
# i=111111
# echo "$i"
111111
# echo '$i'
$i
# echo $i bash
111111 bash
但是不加引号,有时候在脚本里需要区分命令和字符串,就必须加引号,养成良好习惯 参考技术A 单引号,所见即所得 引号里面的内容会原封不动的显示出来。
双引号,和单引号类似 里面的特殊符号会被解析(运行) 比如$ ``(反引号)都是特殊符号。
不加引号,和双引号类似,但是支持通配符 | *。
``相当于反引号优先执行,先执行引号里面的命令,把结果留下来。
[root@oldboyedu60-lnb oldboy]# echo '$UID $HOSTNAME 1..5'
$UID $HOSTNAME 1..5
[root@oldboyedu60-lnb oldboy]# echo "$UID $HOSTNAME 1..5"
0 oldboyedu60-lnb 1..5
[root@oldboyedu60-lnb oldboy]# echo $UID $HOSTNAME 1..5
0 oldboyedu60-lnb 1 2 3 4 5
进阶理解
单引号 双引号
主要作用:
单引号 特殊用法-使用变量的时候,存放入变量的内容包含空格或特殊符号 需要使用引号引起来
[root@g01 ~]# oldboy=i love you
-bash: love: command not found
[root@g01 ~]# oldboy='i love you'
[root@g01 ~]# lidao="very handsome"
[root@g01 ~]# echo $oldboy $lidao
i love you very handsome
单引号在awk中使用单引号 防止特殊符号被shell(命令行解析)
[root@g01 ~]# awk -F: 'NR<=3print $1,$3' /etc/passwd
root 0
bin 1
daemon 2
[root@g01 ~]# awk -F: NR<=3print $1,$3 /etc/passwd #因为没有使用单引号所以被命令行解析了
<是输入重定向 所以提示文件找不到
-bash: =3print: No such file or directory
[root@g01 ~]# awk -F: NR\<=3\print\ \$1,\$3\ /etc/passwd
#就是不想用只能这样进行一个一个的转义了。
root 0
bin 1
daemon 2
双引号特殊用法:sed命令中使用shell变量进行替换
创建变量
[root@g01 ~]# x=root
[root@g01 ~]# y=oldboy
[root@g01 ~]# echo $x $y
root oldboy
进行替换:但是失败了,主要原因是因为使用的是单引号,不会$x进行解析,这里$只会被sed认为是正则表达式以....结尾,但是格式是错误的所以替换失败了
[root@g01 ~]# head -1 /etc/passwd |sed 's#$x#$y#g'
root:x:0:0:root:/root:/bin/bash
只要把这里的单引号改为双引号或不加引号,$x和$y会被shell解析为取变量内容从而进行替换
[root@g01 ~]# head -1 /etc/passwd |sed "s#$x#$y#g"
oldboy:x:0:0:oldboy:/oldboy:/bin/bash
反引号
反引号主要是用来先执行命令,然后把结果给其他命令使用
企业案例1:打包备份/etc/目录到/backup下面保证每天的备份不同
tar zcf /backup/etc-$(date +%F).tar.gz /etc
企业案例2:找出/oldboy目录下以.txt结尾的修改时间是7天之前的大于1M的文件打包压缩到/backup下面
tar zcf /backup/etc.tar.gz $(find /oldboy -type f -name ".txt” -mtime +7
-size +1M)
find /oldboy -type f -name ".txt” -mtime +7 -size +1M|xargs tar zcf
/backup/etc.tar.gz
find /oldboy -type f -name "*.txt” -mtime +7 -size +1M -exec tar zcf
/backup/etc.tar.gz +
老男孩教育每日一题-2017-04-14-说一下单引号双引号和不加引号区别
老男孩教育每日一题-2017-04-14-说一下单引号、双引号和不加引号区别
本文出自 “李导的博客” 博客,请务必保留此出处http://lidao.blog.51cto.com/3388056/1916107
以上是关于linux中双引号单引号和不加引号的区别吗的主要内容,如果未能解决你的问题,请参考以下文章
老男孩教育每日一题-2017-04-14-说一下单引号双引号和不加引号区别