快速业务通道

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,而Goldbergphonebook都是文件名(shell这么理解的).shell会告诉我们grep: Goldberg: No such file or directory(文件或目录不存在).尽管shell判断文件Goldber不存在,它依然认为我们给了它两个文件名,结果出现的文件名phonebook就在情理中了. 回到我们的问题,精确查找Susan Goldberg所在的行.我们需要把Susan Goldberg(包作为patterngrep处理,包括之间的空格.这时我们需要去除空格在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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号