引 号
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条评论)
登录后参与讨论