原创 SHELL学习笔记(5)

2006-10-23 11:42 3526 6 6 分类: 软件与OS

      引         号


shell引用类型
" " 双引号        ` 反引号
' ' 单引号            \ 反斜线


双引号


使用双引号可引用除字符$、`、\外的任意字符或字符串,也就是说它会解释这些特殊字符.在一个反馈的文本行里可以使用双引号将变量引起来。下面的例子中, s h e l l反馈文本行,遇到符号$,知道这是一个变量,然后用变量值b o y替换变量$ B O Y。


$ BOY="boy"


$echo "The  $BOY diid well"


The boy did well


单引号
单引号与双引号类似,不同的是s h e l l会忽略任何引用值。换句话说,如果屏蔽了其特殊
含义,会将引号里的所有字符,包括引号都作为一个字符串。使用上一个例子,结果如下:


$GIRL='girl'


echo  "The  '$GIRL' didi well"


The  'girl' did well


通俗的讲,单引号啥都不管


反引号
反引号用于设置系统命令的输出到变量。s h e l l将反引号中的内容作为一个系统命令,并
执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。


反斜线
如果下一个字符有特殊含义,反斜线防止s h e l l误解其含义,即屏蔽其特殊含义。下述字
符包含有特殊意义: & * + ^ $ ` " | ?。


 


环境和shell变量


测试变量是否已经设置
有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。此命
令格式为:
$ { v a r i a b l e : - v a l u e }
意即如果设置了变量值,则使用它,如果未设置,则取新值。例如:


$COLOR="blue"


$echo  "The sky  is ${COLOR:-grey} today"


The sky  is blue today


但是它不会将该值传给变量.需使用下述命令完成此功能:
$ { v a r i a b l e : = v a l u e }


也可以编写脚本测试变量是否取值,然后返回带有系统错误信息的结果。下面的例子测试变量f i l e是否取值。


echo "The file is ${FILES :?}"


sh: FILES: parameter null or not set 以上结果可读性不好,但是可以加入自己的脚本以增加可读性。


echo "The file is  ${FILES:? "sorry  cannot  locate the file"}"


sh: FILES: sorry  cannot locate the file


测试变量是否取值,如果未设置,则返回一空串。方法如下



$ { v a r i a b l e : + v a l u e }


导出变量除了可以用export 外,还可以用 set 命令


在$ H O M E . p r o f i l e文件中设置环境变量时,还有另一种方法导出这些变量。使用s e t命令- a选项,即set -a指明所有变量直接被导出。不要在/ e t c / p r o f i l e中使用这种方法,最好只在自己的$ H O M E . p r o f i l e文件中使用。


不可以将变量从子进程导出到父进程, 然面通过重定向就可做到这一点


最常用的s t t y命令使用在下述设置上
名称                键                  含义
i n t r                 ^ C               终止进程
e c h o                                   打开e c h o功能
- e c h o                                关闭e c h o功能
e o f                ^ D                文件尾;注销
k i l l                ^U                删除一行
s t a r t            ^ Q                 滚动屏幕文本
s t o p             ^ S              停止滚动屏幕文本


特定s h e l l变量
$ #                   传递到脚本的参数个数
$ *                    以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$ $                    脚本运行的当前进程I D号
$ !                     后台运行的最后一个进程的进程I D号
$ @                  与$ #相同,但是使用时加引号,并在引号中返回每个参数
$ -                     显示s h e l l使用的当前选项,与s e t命令功能相同
$ ?                     显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条