单引号双引号 linux 的区别
" "(双引号)与 ' '(单引号)的区别 你在shell prompt后面敲打键盘、直到按下enter的时候,你输入的文字就是command line了,然后shell才会以进程方式执行你所提交的命令。但是,你又可知道:你在command line输入的每一个文字,对shell来说,有什么类别之分呢? 简单而言,command line的每一个charactor分为如下两种: 下面的例子將有助于我们对 quoting 的了解: $ A=B C # 空白键未被关闭,作为IFS 处理。 在第一次设定 A 变量时,由于空白键没有被关闭,command line 将被解读为: 在上例中,由于 <enter> 被置于 hard quote 当中,因此不再作为 CR 字符來处理。 上例的 <enter> 要是被置于 soft quote 中的话, CR 也会同样被关闭: 然而,由于 echo $A 时的变量沒置于 soft quote 中,因此当变量替换完成后并作命令行重组时,<enter> 会被解释为 IFS ,而不是解释为 New Line 字符。 同样的,用 escape 亦可关闭 CR 字符: 上例中,第一个 <enter> 跟第二个 <enter> 均被 escape 字符关闭了,因此也不作为 CR 來处理, 您或许发现光是一个 <enter> 鍵所产生的字符就有可能是如下这些可能: 至于 soft quote 跟 hard quote 的不同,主要是对于某些 meta 的关闭与否,以 $ 來作说明: 在第一个 echo 命令行中,$ 被置于 soft quote 中,將不被关闭,因此继续处理变量替换, -------------------------------------- 在 CU 的 shell 版里,我发现有很多初学者的问题,都与 quoting 理解的有关。 前面我们提到的那些 meta ,都是在 command line 中有特殊用途的, 由于 { } 在 shell 中并没关闭,那 shell 就將 {print $0} 视为 command block , 要解決之,可用 hard quote : $ awk '{print $0}' 1.txt 上面的 hard quote 应好理解,就是將原本的 {、<space>、$(注三)、} 这几个 shell meta 关闭, awk "{print \$0}" 1.txt 然而,若你要改变 awk 的 $0 的 0 值是从另一个 shell 变量读进呢? $ awk '{print $$A}' 1.txt 那是因为 $A 的 $ 在 hard quote 中是不能替换变量的。 聪明的读者(如你!),经过本章学习,我想,应该可以解释为何我们可以使用如下操作了吧: A=0 单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。 下面用一个简单的shell程序要说明一下。 debian:~/learn/shell# cat phonebook Alice Chebba 973-555-2015 Barbara Swingle 201-555-9257 Liz Stachiw 212-555-2298 Susan Goldberg 201-555-7776 Susan Topple 212-555-4932 Tony Iannino 973-555-1295 Stromboli Pizza 973-555-9478 debian:~/learn/shell# debian:~/learn/shell# cat lu # Look someone up in the phone book grep "$1" phonebook debian:~/learn/shell# 这是正确的lu程序,下面是运行结果。 debian:~/learn/shell# ./lu 'Susan T' Susan Topple 212-555-4932 debian:~/learn/shell# ./lu Tony Tony Iannino 973-555-1295 debian:~/learn/shell# 如果lu写成①grep $1 phonebook或者②grep '$1' phonebook,就会出现下面的错误结果(为什么?)。 ①的结果: debian:~/learn/shell# ./lu Tony //这种情况结果正确 Tony Iannino 973-555-1295 debian:~/learn/shell# ./lu 'Susan T' //这种情况结果错误 grep: T: No such file or directory phonebook:Susan Goldberg 201-555-7776 phonebook:Susan Topple 212-555-4932 debian:~/learn/shell# ②的结果: debian:~/learn/shell# ./lu Tony //这种情况结果错误 debian:~/learn/shell# ./lu 'Susan T' //这种情况结果也错误 debian:~/learn/shell# |
单引号双引号 linux 的区别相关推荐
- 单引号双引号和三引号的区别
单引号双引号和三引号的区别 单引号双引号引用字符串没有区别.三引号引用字符串有所见即所得的功能,三引号也可以用来作为注释.例如: print ('''刘德华牛逼 ''') 结果就是 刘 德华牛逼
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 21 jobs 环境变量 .bash_history source配置文件 nohup ...
centos shell基础知识 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 ...
- js拼装html单引号双引号,js、html中的单引号、双引号及其转义使用
js.html中的单引号.双引号及其转义使用 在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下: IE提示 ...
- python中的单引号双引号和三引号
python的单引号和双引号没有本质的区别,而三引号有两种作用:注释和换行 一. 单引号中可以包含双引号,双引号中可以包含单引号 print("好好学习,'天天向上'")结果: 好 ...
- 编程 单引号 双引号_我的25个最喜欢的编程引号也很有趣
编程 单引号 双引号 Recently I was looking for some good programming quotes for one of my presentation. I was ...
- 达梦8数据库更新语句包含单引号双引号引起转义字符执行失败解决方法全网唯一
达梦数据库更新语句包含单引号双引号引起执行失败解决方法全网唯一 如果一个更新的UPDATE更新语句的内容包含单引号',会引起执行错误! 错误的类型不止这一种,但是都是因为内容里面包含转义字符单引号引起 ...
- 单引号双引号等特殊字符插入mysql数据库失败
情景再现: 从网站爬取技术文章,文章内容.标签.样式包含各种单引号双引号,入数据库失败. 代码如下: 报错如下: 解决办法: 入库前对入库的值进行转义,可使用php系统函数addslashes(). ...
- java 反引 双引号_Shell 单引号 双引号 反引号 反斜线
在Linux中有四种较特殊的符号,分别为双引号 单引号 反引号 反斜线 使用双引号时,相当于等号后面的值作为一个字符串常量赋给了前者(其实这里并没有太大作用),例如: m=java echo $m / ...
- Linux Shell 单引号 双引号 使用区别
From:https://blog.csdn.net/lifu119/article/details/7868231 在bash脚本中,有三种引号 1. 单引号 ' 2. 双引号 " 3. ...
最新文章
- 软件自动测试框架,软件自动化测试框架的研究和实现
- 实战项目五:抓取简书文章信息
- UIAlertView' is deprecated: first deprecated in iOS 9.0 - UIAlertView is deprecated. Use UIAlert
- vue学习(一)初步了解 vue实例
- 技术 | Python从零开始系列连载(二十九)
- 【深入理解JVM】:类加载器与双亲委派模型
- synchronized 和Lock区别
- 【转】WebAPI ASP.Net 发布部署中常见的两个错误未能找到 CodeDom未能加载System.Web.WebPages.Razor
- Asp.net页面之间传递参数的几种方法
- Android Studio下载安装及配置图文教程
- 你必须知道的 SmartSql !
- 怎样把照片中的头像扶正_一个男人的微信头像,往往暴露了“人品”,你是哪一种?...
- Shell 操作 —— 随机数、定时任务
- 彻底了解Windows XP操作系统登录类型
- python写的ROS激光雷达扇形滤波
- win安装android系统服务,拯救你的旧电脑:整个win+Android的双系统
- Typora 主题 艾米莉亚
- 最佳平方逼近 matlab,matlab最佳平方逼近
- 灯塔 (数据结构)
- 立即报名!安全大咖连麦解读银行信息数据安全难题