Linux编程 shell中的字符
shell中的字符是shell脚本的重要组成部分,其中的某些字符具有特定的含义和重要作用。表6列出了一些特殊字符。
6 shell中的特殊字符
字符 | 说明 |
$ | 指示shell变量名的开始 |
| | 管道将命令的标准输出传给下一个命令 |
# | 注释开始 |
& | 后台执行进程 |
? | 匹配一个字符 |
* | 匹配一个或者多个字符 |
> | 输出重定向操作符 |
< | 输入重定向操作符 |
` | 命令替换(后引号或者反撇号,在大多数键盘中该键位于Tab键上方) |
>> | 输出重定向操作符(追加到文件中) |
<< | 等待直到后继输入串结束(HERE操作符) |
[] | 字符范围 |
[a-z] | 从a到z的所有字符 |
[a,z]或者[az] | 字符a或者z |
空格 | 两个单词之间的分隔符 |
建立shell脚本时,特殊字符非常有用,但是,必须小心使用,如果将特殊字符用作变量名或者字符串的一部分,则程序运行将会出现错误。不过,也可以在字符串中使用特殊字符,这时,需要在特殊字符前加一转义字符(\),转义字符表明该字符不用作特殊字符,程序不会将其作为特殊字符处理。下面对其中的某些特殊字符进行详细介绍。
1.使用双引号
如果字符串中包含空格,可以使用双引号将字符串括起来,这样可以使shell将整个字符串解释为一个整体而不是多个。例如,如果在一个shell程序中按下述方式将abc def(在字符c和d之间有一个空格)赋给变量x,将会获得一个错误的结果,因为shell会将def作为一个单独的命令来执行:
x=abc def
如果将该字符串用双引号扩起来,则shell会将该串作为单个命令来执行:
x="abc def"
双引号也解决了字符串中包含变量的问题,例如:
var="test string"
var2="value of var is $var"
echo $var2
将这几行代码放入文件aaa中,可得到如下所示的执行结果:
linux shell编程求和[root@yjy ~]# . aaa
value of var is test string
[root@yjy ~]#
2.使用单引号
使用单引号(')将字符串括起来,可以阻止shell进行变量替换和解释特殊字符。对于后一种情况,单引号就是一个转义字符,类似于反斜线。将上例aaa中的双引号改为单引号,如下所示:
var='test string'
var2='value of var is $var'
echo $var2
这样,执行后的结果如下所示:
[root@yjy ~]# . aaa
value of var is $var
[root@yjy ~]#
从执行结果可以看出,使用单引号可以避免shell脚本中的变量替换,没有替换的变量在输出时保持原样。
3.使用反斜线
反斜线被用作转义字符,它可以阻止shell将后续字符解释为特殊字符。如果希望将$value赋
给变量var,当使用下述命令时,shell读到特殊字符$就会将$value解释为变量value的值:
var=$value
因为没有对value赋值,所以value中存入了一个空值。如果使用下述命令则可以将$value正确地存入var:
var=\$value
美元符号前的反斜线可以告诉shell将$解释为原来的字符,与它的任何特殊含义无关。也可以使用单引号将$value括起来以获得相同的结果。
4.使用反撇号
反撇号字符(`)可以通知shell用其执行结果替代字符串。如果希望将命令的执行结果存入变量中,就可以在shell程序中使用该特殊字符。例如,如果需要计算当前目录中文件的行数并将结果存入变量var,可以使用如下所示的命令:
var=`wc -`
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论