关闭

Shell脚本通用命令符号解析

303人阅读 评论(0) 收藏 举报
分类:
'string' 单引号 (single quote) 
被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。 
heyyou=homeecho '$heyyou' # We get $heyyou 


\"string\" 双引号 (double quote) 
被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。 

heyyou=homeecho \"$heyyou\" # We get home 


; 分号 (Command separator) 
在 shell 中,担任\"连续指令\"功能的符号就是\"分号\"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/. 


~ 帐户的 home 目录 


# 井号 (comments) 
这几乎是个满场都有的符号,除了先前已经提过的\"第一行\" 
#!/bin/bash 
井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。 
# This line is comments. 
echo \"a = $a\" # a = 0 
由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在撰写过程中。



, 逗点 (comma,标点中的逗号) 
这个符号常运用在运算当中当做\"区隔\"用途。如下例 
#!/bin/bashlet \"t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))\"echo \"t1= $t1, a = $a, b = $b\" 



| 管道 (pipeline) 
pipeline 是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。 
who | wc -l 



! 惊叹号(negate or reverse) 
通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表\"不等于\" 
if [ \"$?\" != 0 ]thenecho \"Executes error\"exit 1fi 
在规则表达式中她担任 \"反逻辑\" 的角色 
ls a[!0-9] 
上例,代表显示除了a0, a1 .... a9 这几个文件的其他文件。 



: 冒号 
在 bash 中,这是一个内建指令:\"什么事都不干\",但返回状态值 0。 

echo $? # 回应为 0 
: > f.$$ 
上面这一行,相当于 cat /dev/null >f.$$。不仅写法简短了,而且执行效率也好上许多。 
有时,也会出现以下这类的用法 
: ${HOSTNAME?} ${USER?} ${MAIL?} 
这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。像这种检查如果使用类似 test 或 if这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。 


? 问号 (wild card) 
在文件名扩展(Filename expansion)上扮演的角色是匹配一个任意的字元,但不包含 null 字元。 
# ls a?a1 
善用她的特点,可以做比较精确的档名匹配。 


* 星号 (wild card) 
相当常用的符号。在文件名扩展(Filename expansion)上,她用来代表任何字元,包含 null 字元。 


$ 钱号(dollar sign) 
变量替换(Variable Substitution)的代表符号。 
vrs=123echo \"vrs = $vrs\" # vrs = 123 


|| 逻辑符号 
这个会时常看到,代表 or 逻辑的符号。 


&& 逻辑符号 
这个也会常看到,代表 and 逻辑的符号。 


& 后台工作 
单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。 
tar cvfz data.tar.gz data > /dev/null& 





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:38079次
    • 积分:705
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:77篇
    • 译文:0篇
    • 评论:0条
    文章分类