unix中反引号的应用

转载 2012年03月27日 13:43:38

http://www.sun.tzc.edu.cn/article.asp?id=12441

反引号 `

反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(’)混淆。反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分。例如:

$ pwd

/home/xyz

$ string=”current directory is `pwd`”

$ echo $string

current directour is /home/xyz

$

shell执行echo命令时,首先执行`pwd`中的命令pwd,并将输出结果/home/xyz取代`pwd`这部分,最后输出替换后的整个结果。

利用反引号的这种功能可以进行命令置换,即把反引号括起来的执行结果赋值给指定变量。例如:

$ today=`date`

$ echo Today is $today

Today is Mon Apr 15 16:20:13 CST 1999

$

反引号还可以嵌套使用。但需注意,嵌套使用时内层的反引号必须用反斜线(\)将其转义。例如:

$ abc=`echo The number of users is \`who| wc-l\``

$ echo $abc

The number of users is 5

$

在反引号之间的命令行中也可以使用shell的特殊字符。Shell为得到``中命令的结果,它实际上要去执行``中指定的命令。执行时,命令中的特殊字符,如$,”,?等又将具有特殊含义,并且``所包含的可以是任何一个合法的Shell命令,如:

$ ls

note readme.txt Notice Unix.dir

$ TestString=”`echo $HOME ` ` ls [nN]*`”

$ echo $TestString

/home/yxz note Notice

以下摘至:

http://blog.chinaunix.net/u/31547/showart_365257.html

Unix Shell中解释引号的方法
shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符`
1. 单引号 ( ' ' )
howard@0[script]$ grep Susan phonebook
Susan Goldberg 403-212-4921
Susan Topple 212-234-2343
如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件
howard@0[script]$ grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符
2. 双引号 ( " " )
双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
howard@0[script]$ x=*
howard@0[script]$ echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
howard@0[script]$ echo '$x'
$x
howard@0[script]$ echo "$x"
*
这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的值传递给echo。
对于第一种情况需要进一步说明,shell在给变量赋值时不进行文件名替换(这从第三种情况中也能看出来),各步骤发生的精确次序如下:
shell扫描命令行,把x的值设为星号*;
shell再次扫描命令行,碰到星号*,把它替换成当前目录下的文件清单;
shell启动执行echo命令,把文件清单作为参数传递给echo.
这个赋值的先后次序非常重要:shell先作变量替换,然后作文件名替换,最后把这行处理为参数
3. 反引号(``)
命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。
howard@0[script]$ echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
howard@0[script]$ echo Your current working directory is $(pwd)
Your current working directory is /home/howard/script
4. 反斜杠 backslash-escaped( \ )
反斜杠一般用作转义字符,或称逃脱字符,linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号
echo -e "\n"
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。

Unix Shell中单引号、双引号字符、反斜杠、反引号的使用

在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行; 对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之。 如下,当在命令行中输入: echo * ch...
  • BOBO12082119
  • BOBO12082119
  • 2012年12月31日 10:21
  • 8748

linux 里的`反引号

特殊的赋值  Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下: (1) $ count=9           #将数字赋予变量count (2...
  • baidu_25226775
  • baidu_25226775
  • 2015年10月29日 14:17
  • 1737

【TypeScript学习笔记】代码中反引号的作用-多行文本输入创建多行字符串

我的需求就是在typescript中录入多行字符串。 用到了一个特性:反引号 之前在网上搜了一下,找到一篇《javascript的创建多行字符串的7种方法》,试了过后,各种不爽。 最终找到这个最不...
  • sjt223857130
  • sjt223857130
  • 2017年08月12日 19:34
  • 382

Shell中反引号(`)与$()用法的区别

今天有人提问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样? 这就引申出了另一个问题:反引号与$()有没有区别? 这是一个...
  • apache0554
  • apache0554
  • 2015年07月25日 13:38
  • 17953

mysql反引号和引号的用法

反引号,一般在ESC键的下方。 它是为了区分MYSQL的保留字与普通字符而引入的符号。 举个例子:SELECT `select` FROM `test` WHERE select='字段值' 在tes...
  • weiqubo
  • weiqubo
  • 2013年11月29日 14:09
  • 8488

linux中反引号`与$()得区别

反引号与$()都是命令替换 结果为: 最大的区别为:转义字符的使用不同。 反引号中:若要使用转自字符需要\\ $()中:若要使用转义字符用\例1:反引号使用1个\,$()使用1个 ...
  • ChenMiao0924
  • ChenMiao0924
  • 2017年06月26日 17:34
  • 251

php 中的单引号 双引号 反引号的作用

字符串的写法 字符串以单、双或倒引号围住分别有不同的义意。 单引号 例如: $str = An apple a day keeps the docter away. 当字符串出现 符号时,必须加上:...
  • nailwl
  • nailwl
  • 2009年12月25日 22:46
  • 2819

PHP中反引号应用

反引用的本质就是在操作系统执行该命令。 举几个例子,本人在mac下的测试php交互模式yaoyakundeMacBook-Air:webapp yaoyakun$ php -a Interactiv...
  • fationyyk
  • fationyyk
  • 2017年04月14日 17:29
  • 551

php的反引号以及双引号中的反引号

废话少说, 直接上菜:       结果:Sat Dec  3 13:57:38 UTC 2016       结果:HELLO `date`...
  • stpeace
  • stpeace
  • 2016年12月03日 21:59
  • 2457

bash编程中反引号

反引号(`   `):能把shell中一个命令的标准输出嵌入到原来的位置!也叫做是命令替换,于它等价的是$(cmd)。 #!/bin/bash ls -l / `ls -l / | awk {pr...
  • firefoxbug
  • firefoxbug
  • 2012年05月11日 20:58
  • 3861
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unix中反引号的应用
举报原因:
原因补充:

(最多只允许输入30个字)