wolong 发表于 2018-5-23 12:00:55

Linux 反引号 的作用

  感谢yu000hong,原文链接:http://blog.sina.com.cn/s/blog_48a45b9501010s8x.html
  特殊的赋值
Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下:
  (1) $ count=9         #将数字赋予变量count
  (2) $ name="ming"#将字符赋予变量name
  (3) $ listc=`ls -la`   #将Linux命令赋予listc,listc的值就是该命令的执行结果
  
反引号的作用

反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。尽管可以通过输入字符或者字符串来创建变量值,也可以获取来自于其他Linux命令的值。为把Linux命令的结果赋予变量,实现需要执行这个命令。如果在命令行上把Linux命令放在反引号中,这个命令会首先被执行,其结果会成为命令行的一个参数。在赋值时,通过把命令放在反引号中,以便于首先执行,命令的执行结果会被赋予一个变量。反引号可以被视为由要执行命令组成的表达式,其结果会被赋予变量。组成命令的字符本身不会被赋予。在下面的范例中,命令ls *.c被执行,其结果然后被赋予变量listc。ls *.c会生成具有.c扩展名的所有文件列表。这个文件列表随后被赋予变量listc。


[*]  $ listc=`ls *.c`
[*]  $ echo $listc
[*]  main.c prog.c lib.c
  

  反引号与单引号的区别

需要记住单引号和反引号之间的区别。单引号把Linux命令视为字符集合。反引号会强迫执行Linux命令。有时候,当希望使用反引号时,会误用单引号。在下面的范例中,如要给lscc变量赋值,需要给命令ls *.c应用单引号,而不是反引号。在这种情况下,ls *.c仅仅是被赋予变量lscc的字符集合。在第二个范例中,反引号被应用于ls *.c命令,会强迫这个命令。扩展名.c的文件名列表会生成,并赋予变量lscc。


[*]  $ lscc='ls *.c'
[*]  $ echo $lscc
[*]  ls *.c
[*]  $ lscc=`ls *.c`
[*]  $ echo $lscc
[*]  main.c prog.c
  
页: [1]
查看完整版本: Linux 反引号 的作用