`
jay_kid
  • 浏览: 65063 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

from http://hi.chinaunix.net/?306269/viewspace-44406

shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符\ 反引号字符`

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把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。

BTW

$()和``的区别
反引号和$()的功能是命令替换,将反引号或$()中的字符串做为命令来执行,我们在用shell编程时经常用的到 将系统命令的执行结果赋给一个变量
但反引号内不能再引用反引号,而$()中可以引用反引号
[root@music b]# cat aa
13
45
mimi bibi
[root@music b]# data=`cat `ls``
没反应,我Ctrl+c了
[root@music b]# data=$(cat `ls`)
[root@music b]# echo $data
13 45 mimi bibi

分享到:
评论

相关推荐

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

    在Linux Shell编程中,了解和掌握单引号、双引号、反引号和反斜杠的区别至关重要,因为它们在处理字符串和命令时起到不同的作用。 1. 单引号(' '): 单引号的作用是告诉Shell忽略其内部的所有特殊字符。这意味着...

    linux系统中单引号和双引号的区别

    ### Linux系统中单引号和双引号的区别 在Linux系统中,无论是命令行操作还是脚本编程,正确地使用单引号(`'`)和双引号(`"`)是非常重要的。这两种引号在处理字符串时有着不同的规则和用途,理解它们之间的差异...

    SQL Server中单引号的两种处理技巧

    总结,处理SQL Server中单引号问题的关键在于理解转义字符的概念以及如何利用参数化查询的优势。在实际编程中,推荐使用参数化查询,以提高性能和安全性。同时,为了防止SQL注入攻击,应避免直接在SQL语句中拼接用户...

    浅谈PHP中单引号和双引号到底有啥区别呢?

    本文详细解释了PHP中单引号与双引号之间的区别,并与JavaScript中引号的使用进行了简单的对比,以便我们更好地理解。 首先,在PHP中,单引号与双引号在基本用法上是类似的,都用来界定字符串的开始和结束。但是,...

    简单概括PHP的字符串中单引号与双引号的区别

    - **单引号**:单引号只支持少数转义序列,如`\''`(单引号)和`\\`(反斜杠)。对于`\n`这样的转义序列,单引号字符串会将其视为普通字符,如`echo 'hello is $hello\n';`将原样输出包含`\n`的字符串。 3. **性能...

    sql语句中单引号,双引号的处理方法

    以下是对SQL语句中单引号和双引号处理方法的详细解释: 1. **插入字符串型数据**: 当你需要插入字符串类型的数据,如姓名时,字符串需要用单引号括起来。例如,插入姓名为"张红"的记录,SQL语句应写为`INSERT ...

    单引号与双引号在不同语言中的区别(C语言,Python语言,Matlab语言)

    内容要点:单引号与双引号在不同语言中的区别 C语言 : 单引号和双引号 截然不同,单引号 表示 字符,双引号 表示 字符串。 Python语言 两者都可以用,不用区别,都是字符串。 Matlab语言 早期的版本,只能用 单引号...

    php单引号和双引号的区别

    在**双引号(" ")**中,某些特殊字符可以通过前缀反斜杠(\)进行转义,如`\n`代表换行,`\t`代表制表符等。然而,在**单引号('')**中,除了`\'`(单引号)和`\\`(反斜杠)之外,其他转义序列都不会被解析,这使得单...

    PHP中单引号与双引号的区别分析

    在单引号中,只有两个转义序列会被解析:'\''(单引号自身)和 '\\\'(反斜杠)。这意味着在单引号内,其他转义序列如'\n'(换行)、'\r'(回车)和'\t'(制表符)都不会被解析,它们会被当作普通字符输出。而双引号...

    浅谈oracle中单引号转义

    ORACLE 单引号转义: 在ORACLE中,单引号有两个作用:   1:字符串是由单引号引用   2:转义。  单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解  1.从第二个单引号开始被视为...

    Shell脚本中单引号(‘)和双引号(“)的使用区别

    在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用’$param’这种带引号的使用的场景,首先大家看一段例子: ...

    SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf

    SQL 中存储过程中 SQL 语句的单引号和双引号问题 在 SQL 中,单引号和双引号的问题是一个常见的混淆点,特别是在存储过程中编写 SQL 语句时。下面将对此问题进行详细的解释和总结。 一、单引号和双引号的基本概念 ...

    js中单引号与双引号冲突问题解决方法

    模板字面量使用反引号(``)来界定字符串,并且可以自由地使用单引号和双引号嵌套,无需转义。例如: ```javascript html += `<a onclick="return removeOpenCss(${e.point.lng + e.point.lat})">取消</a>`; ``` ...

    python里的单引号和双引号的有什么作用

    在Python编程语言中,单引号 `'` 和双引号 `"` 主要用于定义字符串。它们之间实际上没有本质的区别,都是用来创建字符串对象的。在Python中,你可以自由选择使用单引号还是双引号来包围字符串内容,这在很多其他编程...

    分析PHP中单双引号的误区和双引号小隐患

    这里,双引号允许我们直接在字符串中插入引号,而无需使用额外的反斜杠转义。 然而,双引号的特性也可能带来安全风险。PHP的变量解析功能使得攻击者有可能通过注入变量名来执行未预期的代码。例如,下面的代码展示...

    jquery 单引号和双引号的区别及使用注意

    总结来说,jQuery中单引号和双引号的区别主要体现在字符串嵌套时的使用策略。一般推荐的做法是选择一种引号类型作为默认,当需要嵌套字符串时,使用另一种引号以避免语法错误。保持良好的编码习惯,可以提高代码的...

Global site tag (gtag.js) - Google Analytics