Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2422864
  • 博文数量: 298
  • 博客积分: 7876
  • 博客等级: 准将
  • 技术积分: 5500
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-23 13:39
文章存档

2013年(2)

2012年(142)

2011年(154)

分类: Python/Ruby

2012-02-18 20:56:22

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”

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