码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习三十七天----引用

时间:2015-07-04 14:00:38      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:shell

引用

案例,如果我想输出一个星号(*),使用echo如何做?

echo *

这是肯定不行的,需要将*转移,:echo \*

这样就引出了引用的概念.所为引用,是用来防止shell将某些你想要的东西解释成不同的意义.如果你希望某些可能被shell视为个别参数的东西保持为单个参数,这时你就必须将其引用.

引用的三种方式:

反斜杠转义

字符前置反斜杠(\),用来告知shell该字符即为其字面上的意义.

单引号

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

命令:echo ‘here are some character * ? ` $ \‘

输出:here are some character * ? ` $ \

不能再一个单引号引用的字符串里再内嵌一个单引号.即使是反斜杠,在单引号里也没有特殊意义(某些系统里,echo ‘A\tB’这样的命令看起来像是shell特别的处理反斜杠,其实不然,这是echo命令本身有特殊的处理方式)

 

如需混用单引号和双引号,可以小心的使用反斜杠转义以及不同引用字符串的连接来做到:

命令:echo ‘he said "how‘\‘‘s tricks?"‘

输出:he said "how‘s tricks?"

命令”echo "she replied ,\"movin‘ along\""

输出:she replied ,"movin‘ along"

不管怎么处理,这种结合方式永远是很难阅读的.

双引号

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

x=hahaha

echo “$x”

输出:hahaha

在双引号里,字符$,”,`\,如需用到字面上的意义,都必须前置\.任何其他字符前面的反斜杠是不带特殊意义的.序列\-newline会完全的被删除,就好像是用在脚本里的正文中一样.

单引号被括在双引号里时就无特殊意义了,他们不必承兑,也不许转移.

命令:echo "hahah‘"

输出:hahah‘

 

一般来说,使用单引号的时机是希望完全不处理的地方.否则,当希望将多个单词视为单一字符串,但又需要shell为你做些事情,此时使用双引号,例如将一个变量值与另一个变量值连在一起:

oldvar=”$oldvar $newvar”

版权声明:本文为博主原创文章,未经博主允许不得转载。

shell学习三十七天----引用

标签:shell

原文地址:http://blog.csdn.net/shanyongxu/article/details/46754957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!