linux shell中单引号、双引号、反引号、反斜杠的区别

 更新时间:2013年01月23日 17:23:51   转载 作者:  
shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符`的区别,学习shell编程的朋友可以看下
1. 单引号 ( '' )

# grep Susan phonebook
Susan Goldberg 403-212-4921
Susan Topple 212-234-2343
如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件
# grep 'Susan Gold' phonebook
Susan Goldberg 403-212-4921
当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符

2. 双引号 ( " " )

双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
# x=*
# echo $x
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x'
$x
# echo "$x"
*
这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的值传递给echo。 对于第一种情况需要进一步说明,shell在给变量赋值时不进行文件名替换(这从第三种情况中也能看出来),各步骤发生的精确次序如下: shell扫描命令行,把x的值设为星号*;
shell再次扫描命令行,碰到星号*,把它替换成当前目录下的文件清单;
shell启动执行echo命令,把文件清单作为参数传递给echo.
这个赋值的先后次序非常重要:shell先作变量替换,然后作文件名替换,最后把这行处理为参数

3. 反引号(``)

命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。
# echo The date and time is `date`
The date and time is 三 6月 15 06:10:35 CST 2005
# 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把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。

相关文章

  • linux下批量删除utf8 bom的实现方法

    linux下批量删除utf8 bom的实现方法

    下面小编就为大家带来一篇linux下批量删除utf8 bom的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Linux 中的Logwatch命令

    Linux 中的Logwatch命令

    在Linux系统操作中,logwatch能够对系统log报告进行分析,用于Linux日志的处理,下面小编给大家详细介绍下Linux 中的Logwatch命令,感兴趣的朋友一起看看吧
    2017-09-09
  • shell随机定时修改密码change_passwd.sh

    shell随机定时修改密码change_passwd.sh

    这篇文章主要介绍了shell随机定时修改密码change_passwd.sh,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Linux在shell中自动生成1到100的数组方法(两种方法)

    Linux在shell中自动生成1到100的数组方法(两种方法)

    之前自己在写shell脚本的时候,需要自动创建1-100的文本确不知道该如何去创建。今天小编给大家分享两种方法,需要的朋友参考下
    2017-02-02
  • Linux 中fork的执行的实例详解

    Linux 中fork的执行的实例详解

    这篇文章主要介绍了Linux 中fork的执行的实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Shell脚本自动备份MySQL到FTP并定期清理过期备份

    Shell脚本自动备份MySQL到FTP并定期清理过期备份

    这篇文章主要介绍了Shell脚本自动备份MySQL到FTP并定期清理过期备份,本文中的脚本同时实现了定期清理旧备份数据的功能,这是一大特色,需要的朋友可以参考下
    2014-12-12
  • 用来查看linux内存使用情况的shell脚本

    用来查看linux内存使用情况的shell脚本

    本文为大家提供的这个脚本,通过查看status文件中VmRSS的字段来查看系统或进程使用的内存情况,有需要的朋友不妨参考下
    2013-02-02
  • shell脚本监控系统负载、CPU和内存使用情况

    shell脚本监控系统负载、CPU和内存使用情况

    这篇文章主要介绍了shell脚本监控系统负载、CPU和内存使用情况,本文分别给出监控服务器系统负载情况、监控系统cpu使用情况、、监控系统内存情况、监控系统交换分区swap使用情况的脚本,需要的朋友可以参考下
    2014-12-12
  • Shell脚本注册到Linux系统服务实例

    Shell脚本注册到Linux系统服务实例

    这篇文章主要介绍了Shell脚本注册到Linux系统服务实例,本文给出一个可以作为Linux服务的脚本实例,及加入服务的方法等步骤,需要的朋友可以参考下
    2015-05-05
  • shell中嵌套执行expect命令实例

    shell中嵌套执行expect命令实例

    这篇文章主要介绍了shell中嵌套执行expect命令实例,一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,需要的朋友可以参考下
    2014-12-12

最新评论