linux shell编程指南第十五章------引号
引用错误。在命令行中引用是很重要的。
这里只讲述引用的基本规则。因为使用引用的例子很多。本书接下来的两个部分将一一
予以讲述。脚本中执行行操作时, s h e l l将对脚本设置予以解释。要采取一种方法防止s h e l l这
样做,即使用引用号,包括各式引用或使用反斜线。
下面列出各种引用类型。
" " 双引号 ` 反引号
' ' 单引号 / 反斜线
使用双引号可引用除字符$、`、/外的任意字符或字符串。这些特殊字符分别为美元符号,
反引号和反斜线,对s h e l l来说,它们有特殊意义。如果使用双引号将字符串赋给变量并反馈
它,实际上与直接反馈变量并无差别。
[root@localhost huangcd]# string="nihao huang cheng du"
[root@localhost huangcd]# echo "$string"
nihao huang cheng du
[root@localhost huangcd]# echo $string
nihao huang cheng du
因为s h e l l将" "符号里的字符串赋予变量m y d a t e,d a t e已没有特定意义,故此变量只保存单
词d a t e。
[root@localhost huangcd]# mydate="date"
[root@localhost huangcd]# echo $mydate
date
如果要查询包含空格的字符串,经常会用到双引号。以下使用g r e p抽取名字“Davey Wi r e”,
因为没有加双引号, g r e p将“D a v e y”认作字符串,而把“Wi r e”当作文件名。
要解决这个问题,可将字符串加双引号。这样s h e l l会忽略空格,当使用字符时,应总是
使用双引号,无论它是单个字符串或是多个单词。
[root@localhost huangcd]# grep "Sabayon user" /etc/passwd
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
在一个反馈的文本行里可以使用双引号将变量引起来。下面的例子中, s h e l l反馈文本行,
遇到符号$,知道这是一个变量,然后用变量值b o y替换变量$ B O Y。
[root@localhost huangcd]# boy="BOY"
[root@localhost huangcd]# echo "The $boy did well"
The BOY did well
[root@localhost huangcd]# echo "the "$boy" did well"
the BOY did well
单引号与双引号类似,不同的是s h e l l会忽略任何引用值。换句话说,如果屏蔽了其特殊
含义,会将引号里的所有字符,包括引号都作为一个字符串。使用上一个例子,结果如下:
[root@localhost huangcd]# girl='GIRL'
[root@localhost huangcd]# echo "the '$girl' did well"
the 'GIRL' did well
[root@localhost huangcd]# echo 'the '$girl' did well'
the GIRL did well
反引号用于设置系统命令的输出到变量。s h e l l将反引号中的内容作为一个系统命令,并
执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。
[root@localhost huangcd]# echo `hello`
bash: hello: command not found
[root@localhost huangcd]# echo `date`
2013年 12月 07日 星期六 10:51:55 CST
[root@localhost huangcd]# date +%A" the "%e" of "%B" "%Y
星期六 the 7 of 十二月 2013
打印当前系统上用户数目:
[root@localhost huangcd]# echo "`who|wc -l`"
2
如果下一个字符有特殊含义,反斜线防止s h e l l误解其含义,即屏蔽其特殊含义。下述字
符包含有特殊意义: & * + ^ $ ` " | ?。
上述语句同样可用于$ $命令, s h e l l解释其为现在进程I D号,使用反斜线屏蔽此意,仅打
印$ $。
[root@localhost huangcd]# echo /*
*
[root@localhost huangcd]# echo $$
4936
[root@localhost huangcd]# echo /$$
$$
1) 反馈字符串用双引号;但不要引用反馈本身。
2) 如果使用引用得到的结果不理想,再试另一种,毕竟只有三种引用方式,可以充分尝
试。
- 11-131分钟学会U盘启动安装Linux系统
- 11-13克隆MAC地址来绕过强制门户
- 11-13Linux运维常见故障及处理的 32 个锦囊妙计
- 11-13如何快速以管理员权限运行Linux命令?
- 11-13超全面的Linux应急响应技巧
- 11-136 款面向 Linux 用户的开源绘图应用程序
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复