Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69413
  • 博文数量: 51
  • 博客积分: 141
  • 博客等级: 入伍新兵
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 15:50
文章分类

全部博文(51)

文章存档

2012年(51)

最近访客

分类:

2012-03-05 22:35:06

原文地址:shell中的引用 作者:g_programming

shell中的引用

 

引用是用来防止shell将某些你想要的参数解释成不同的意义。举例来说如果你要命令接受含有元字符的参数,如*或者?,

现在我所知道的有特殊意义的字符: & * + ^ $ ` " | ? ' \

就必须要将这些元字符用引号引用起来,或者更典型的情况是:你希望将某些可能被shell视为个别参数的东西保持为单个参数,这时你必须将其引用,下面是引用的三种方式:

1、 反斜杠转义

字符前置反斜杠(\),用来告知shell该字符即为其字面上的意思,这是引用单一字符的最简单的方式:

$ echo here is a real star : \* and a real question mark: \?

$here is a real star : * and a real question mark: ?

 

2、 单引号

1)单引号强制shell将一对引号之间的所有字符都看作其字面上的意义,shell脚本会删除这两个引号,只留下单独被括起来的完整文字内容:

$echo ‘here are some metacharacters: * ? [abc] ` $ \’

$here are some metacharacters: * ? [abc] ` $ \

2)不可以在一个单引号引用的字符串里再内嵌一个单引号,即便是反斜杠在单引号里面都没有特殊意义。如需要混用单引号和双引号,你可以小心地使用反斜杠转义以及不同引用字符串的连接做到。

 

3、 双引号

1)双引号就像单引号那样,将括起来的文字视为单一的字符串,只不过双引号会确切地处理括起来文字中的转义字符和变量、算术、命令替换。

$x=”I am x”

$echo “\$ x is \”$x\”. Here is some output: ‘$(echo Hello World)’”

$$x is ” I am x”. Here is some output: ‘Hello World’

2)在双引号里面,字符$`\,如需要用到字面上的意义就必须要前置转义字符\。任何其他字符前面的反斜杠是不带有特殊意义的。序列\-newline会完全地删除,就好像用在脚本的正文中一样,单引号在双引号里面没有特殊意义,如果你想要将一个变量值与另外一个变量值连接到一起:

$oldvar=”$oldvar $newvar”

阅读(677) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~