shell学习笔记四--引用
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-29
|
这一篇我们主要讨论shell中的引用,本篇内容不多,之所有要单独篇幅来讨论是它很重要相对比较独立.我们要介绍的引用方法包括以下内容:
单引号’
双引号”
反斜杠
反引号`
命令引用$( )
一、单引号
我们前面介绍了变量,还介绍了文件名替换中的特殊符号*和命令行中空格的意义.如果变量或者命令行中出现了shell特殊字符,应该怎么处理呢?还是举例子吧:
$ cat phonebook
Alice
Chebba 973-555-2015
Barbara Swingle
201-555-9257
Billy Bach 201-555-7618
Liz
Stachiw 212-555-2298
Susan
Goldberg 201-555-7776
Susan
Topple 212-555-4932
Tony
Iannino 973-555-1295
$ grep Susan phonebook
Susan
Goldberg 201-555-7776
Susan
Topple 212-555-4932
$
我们知道,grep可以知道含有特定模式的行,这里找出了显示了包含字符Susan的行,结果有2行.如果我们想精确查找Susan Goldberg所在的行呢?
$ grep Susan Goldberg phonebook
grep: Goldberg:
No such file or directory
phonebook:Susan
Goldberg 201-555-7776
phonebook:Susan
Topple 212-555-4932
$
可以看到,shell先抛出了一个错误,然后显示了包含Susan的行,前面还有文件名,这一系列的结果似乎并不在我们的意料之内.我们先来回顾一下grep的语法规则:
grep pattern
file(s)
按照这个规则,我们不难理解shell在想些什么:命令行
grep Susan
Goldberg phonebook
中,Susan是模式pattern,而Goldberg和phonebook都是文件名(shell这么理解的).shell会告诉我们grep: Goldberg: No such file or
directory(文件或目录不存在).尽管shell判断文件Goldber不存在,它依然认为我们给了它两个文件名,结果出现的文件名phonebook就在情理中了.
回到我们的问题,精确查找Susan Goldberg所在的行.我们需要把Susan Goldberg(包作为pattern给grep处理,包括之间的空格.这时我们需要去除空格在shell中特殊意义(还记得吗,空格是命令行参数分隔符之一),单引号可以帮我们解决这个问题:
$ grep ''Susan Goldberg'' phonebook
Susan
Goldberg 201-555-7776
$ file=/home/steve/memos
$ file=$(echo $file | tr “$(echo $file | cut -c1)”
"^")
$ echo $file
^home^steve^memos
$
这两个例子的效果是一样的,请对比理解.
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|