在bash中,$、*、?、[、]、’、”、`、\、有特殊的含义。类似于编译器的预编译过程,bash在扫描命令行的过程中,会在文本层次上,优先解释所有的特殊字符,之后对转换完成的新命令行,进行内核的系统调用。

其中,反引号类似于函数调用,而不仅仅是简单的文本替换及匹配。

命令行中,被单引号引用的部分,其中所有的特殊字符按照普通字符解释;

双引号引用的部分,仅解释$(美元符号)、\(\n \t除外)、`(反引号),解释后的文本仅按照普通文字处理(同单引号)。

反引号相当于命令替换,引用的部分优先执行,将运行结果替换到外层的命令行文本中;反引号可以嵌套,但是嵌套时内部的反引号必须用\转义

反斜杠用于命令换行,以及echo -e解释。

网上各种文章常见的例子,其中第二行重点介绍一下:

# x=*                     
# echo $x      此行执行了两次替换,将$x替换为*,之后将*替换为当前目录下所有文件列表的文本,

          该文本作为参数赋给echo(bash会自动按照优先级,进行多层次替换 )
hello.sh menus.sh misc.sh phonebook tshift.sh
# echo '$x'               $x不进行任何解释,直接将文本‘$x’作为参数赋给echo
$x
# echo "$x"              $x替换为*,但是由于在双引号内,*不做替换,因此文本“*”将作为参数赋给echo
*

Tips:

大多数Linux Distribution的默认shell为bash,查询当前主机所有shell可执行如下命令:

$ cat  /etc/shell

bash内部集成了40多条命令,通用格式为:

$ 命令 [-选项] [参数]

其中,”-“后为单字符选项,"--"后为完整的单词选项。一般来说,命令的某项功能(feature),会同时支持单字符选项及对应的多字符选项。

在bash中,*、?、[、]有特殊的含义,用于字符匹配。*代表0到多个字符,?代表单个字符。[]用于匹配单个字符,内部用短横线按照ASCII码顺序标明匹配的字符范围,或者枚举所有要匹配的字符。

在编写shell脚本时对于引号的应用也是十分重要的,这里总结一下三种引号的特点。

1、单引号(‘’),被单引号包裹的内容会将其视为字符串,即使做了像 \n  这样的换行,也会照样输出 \n 而不是 换行。
 
2、双引号(“”),和单引号不同的是,双引号会将包裹内容的转义字符输出。下面做一个例子:
[javascript] 
$ name=kehr  
$ echo "$name"  
kehr  
$ echo '$name'  
$name  
明显可以看出二者的差别
 
3、小引号(``)这个符号也不知道学名叫什么,我管它叫“小引号”,哈哈。
它的作用是,被小引号包裹的内容会先执行。
 
例如,当我们在安装内核devel等文件的时候会用到下面的命令:
[html] 
yum install kernel-devel-`uname -r`  
 
这里的小引号就是键盘数字1,左边的那个键。

Shell中的单引号(‘)双引号(”)和反引号(·)的更多相关文章

  1. python中的单引号双引号和三引号

    python的单引号和双引号没有本质的区别,而三引号有两种作用:注释和换行 一. 单引号中可以包含双引号,双引号中可以包含单引号 print("好好学习,'天天向上'") 结果: ...

  2. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

    tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...

  3. linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别

    一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免 ...

  4. linux shell中,单引号、 双引号,反引号(``),$()的区别

    一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行会报错.为了避免这 ...

  5. js方法参数中含有单引号双引号的处理

    最近在做项目时,遇到一个问题.当在js脚本中,拼接生成一个tr,然后添加到一个表格里. //假定testval是从后台传过来的数据 var testval = "含有'半角单引号的字符串&q ...

  6. shell单引号双引号详解

    linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了) " "(双引号)与 ' '(单引号)的区别    你在shell prompt(shell 提示)后面敲 ...

  7. go 单引号,双引号,反引号区别

    go里面双引号是字符串,单引号是字符,不存在单引号字符串. 但有反引号字符串,就是esc键下面1键左边tab键上面那个键,区别是反引号字符串允许换行符

  8. centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  9. javaScript中的单引号与双引号

    javaScript中的单引号与双引号没有什么区别.但因为xhtml规范要求所有xhtml属性要用双引号括起来.所以在javaScript中使用单引号. var html = '<h2 clas ...

  10. js、html中的单引号、双引号及其转义使用

    js.html中的单引号.双引号及其转义使用在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<in ...

随机推荐

  1. JavaScript 资源大全中文版

    我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-javascript 是 sorrycc 发起维护的 JS 资源列表,内容包括:包管理器.加 ...

  2. Reading comprehension HDU - 4990 (矩阵快速幂 or 快速幂+等比数列)

    ;i<=n;i++) { )ans=(ans*+)%m; %m; } 给定n,m.让你用O(log(n))以下时间算出ans. 打表,推出 ans[i] = 2^(i-1) + f[i-2] 故 ...

  3. UVA_1025 a Spy in the Metro 有向无环图的动态规划问题

    应当认为,有向无环图上的动态规划问题是动态规划的基本模型之一,对于某个模型,如果可以转换为某一有向无环图的最长.最短路径问题,则可以套用动态规划若干方法解决. 原题参见刘汝佳紫薯267页. 在这个题目 ...

  4. 笔记-编程-IO模型

    笔记-编程-IO模型 1.      简介 常用IO模型 1)      同步阻塞IO(Blocking IO) 2)      同步非阻塞IO(Non-blocking IO) 3)      IO ...

  5. wcf第三方客户端与wcf服务之间调用入门

    Wcf服务与我们的客户端如何建立联系的呢.本文简单记录一下 1.创建我们的wcf服务程序. 第一个wcf服务库是创建我们的wcf库,运行时会单独来托管我们的程序,而非托管在iis下. 第二个wcf服务 ...

  6. Visual Studio-IIS Express 支持局域网访问配置

    转自:http://www.itnose.net/detail/6132793.html 注意:本人测试后,发现个问题,不知是我个人的VS问题还是普遍的.就是将配置文件中的新增的节点注释后,会导致页面 ...

  7. #3 working with data stored in files && securing your application

    This chapter reveals that you can use files and databases together to build PHP application that waa ...

  8. loj2308 「APIO2017」商旅

    ref #include <iostream> #include <cstring> #include <cstdio> #include <queue> ...

  9. MOCTF-火眼金睛

    MOCTF-火眼金睛 http://119.23.73.3:5001/web10/ 把这个题目当作python爬虫来练习. 首先要获取到文本框里面的全部信息, import requests impo ...

  10. 【LeetCode】Remove Duplicates from Sorted List(删除排序链表中的重复元素)

    这道题是LeetCode里的第83道题. 题目描述: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: ...