单引号(' ')
单引号可以说是即见即所得,即将单引号的内容原样输出
由单引号括起来的字符都作为普通字符输出
防止任何变量扩展,当shell碰到第一个单引号时,它将忽略掉其后直到右引号的所有特殊字符
例如:
a=hello
echo ' $a ? * `pwd` ' # 输出: $a ? * `pwd`
echo ' " `pwd` " ' # 输出:" `pwd` "
双引号(" ")
双引号与单引号类似,不同在于单引号忽略所有特殊字符,双引号只要求忽略大多数
$ \ `,其余字符作为普通字符对待
echo " ' `pwd` ' " # 输出:' /home/ubuntu '
echo " ' $a ' " # 输出:' hello '
与单引号的区别实例:
x=*
echo $x # 输出当前目录下的所有文件
echo ' $x ' # 输出:$x
echo " $x " # 输出:*
反引号(` `)
1.反引号括起来的字符串被shell解释为命令行
在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个反引号部分
shell能够将一个命令的标准输出插在一个命令行中任何位置
echo today is `date` # 输出:today is 2013年 04月 23日 星期二 09:29:30 CST
# shell执行echo命令时,首先执行`date`的命令date,并将输出结果取代`date`这部分
# 最后输出替换后的整个结果
2.反引号的这种功能可以进行命令置换,即把反引号括起来的执行结果赋值给指定变量
例如:
today=`date`
today is 2013年 04月 23日 星期二 09:29:30 CST
3.$(...)结构也可以进行命令替换
today=$(date) # 将date命令的标准输出结果取代$(date)这部分并赋给变量today
echo today is $today # 输出:today is 2013年 04月 23日 星期二 09:29:30 CST
4.$()和``的区别
反引号可以嵌套使用,但必须注意嵌套使用时内层的反引号必须用反斜线将其转义
例如:
user=`echo user is `whoami``
echo $user # 输出:user iswhoami
user=`echo user is \`whoami\``
echo $user # 输出:user is ubuntu
反引号内嵌套反引号时必须用反斜线将其转义,而$()中可以直接嵌套
user=$(echo user is $(whoami))
echo $user # 输出:user is ubuntu
5.$()和``的优缺点
反引号基本上可用在全部的unix shell中,其移植性比较高,但是``(反引号)与' '(单引号)容易混淆
$()相对于``比较直观,而且可以多层嵌套,但是$()并不是每一种shell都能使用。
反斜线(\)
1.反斜线放在特殊符号前,则该特殊符号的作用消失
放在指令前,有取消别名(aliases)的作用
name=jim
echo $name # 输出:jim
echo \$name # 输出:$name
echo * # 输出当前目录下的所有文件
echo \* # 输出:*
echo \' # 输出:'
echo \" # 输出:"
echo \\ # 输出:\
2.在echo命令后如果要让转义字符发生作用就要使用-e选项并且使用双引号括起来
如\a \b \e \n \r \t 等
echo \n # 输出:n
echo "\n" # 输出:\n
echo -e \n # 输出:n
echo -e "\n" # 输出:换行
3.反斜线用于一行的最后一个字符时即反斜线后跟着一个新行
shell会把行尾的反斜线作为续行符(回车符无效,只起换行作用)
这种结构在分几行输入长命令时经常使用
echo 输出单引号 shell 输出单引号
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
[oeasy]python0006_指法标准_键盘正位_你好世界_hello_world_单引号_双引号
指法入门
单引号 python 双引号