资源描述:
《shell的特殊符号的意义》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、shell脚本中一些特殊符号在shell中常用的特殊符号罗列如下: #; ;;.,/\'string'
2、! $ ${} $?$$ $* "string"*** ?:^$# $@`command`{} [][[]]() (())
3、
4、 &&{xx,yy,zz,...}~ ~+ ~- & \<...\> +-%= == != #井号(comments) 这几乎是个满场都有的符号,除了先前已经提过的"第一行" #!/bin/bash 井号也常出现在一行的开头,或者位于完整指令之后
5、,这类情况表示符号后面的是注解文字,不会被执行。 #Thislineiscomments. echo"a=$a"#a=0 由于这个特性,当临时不想执行某行指令时,只需在该行开头加上#就行了。这常用在撰写过程中。 #echo"a=$a"#a=0 如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。 ~帐户的home目录 算是个常见的符号,代表使用者的home目录:cd~;也可以直接在符号后加上某帐户的名称:cd~user或者当成是路径的一部份:~/bin ~+当前的工作目
6、录,这个符号代表当前的工作目录,她和内建指令pwd的作用是相同的。 #echo~+/var/log ~-上次的工作目录,这个符号代表上次的工作目录。 #echo~-/etc/httpd/logs ;分号(Commandseparator) 在shell中,担任"连续指令"功能的符号就是"分号"。譬如以下的例子:cd~/backup;mkdirstartup;cp~/.*startup/. ;;连续分号(Terminator) 专用在case的选项,担任Terminator的角色。 case"$fop"inhelp)
7、echo"Usage:Command-help-versionfilename";;version)echo"version0.1";;esac .逗号(dot,就是“点”) 在shell中,使用者应该都清楚,一个dot代表当前目录,两个dot代表上层目录。 CDPATH=.:~:/home:/home/web:/var:/usr/local 在上行CDPATH的设定中,等号后的dot代表的就是当前目录的意思。 如果档案名称以dot开头,该档案就属特殊档案,用ls指令必须加上-a选项才会显示。除此之外,在regular
8、expression中,一个dot代表匹配一个字元。 'string'单引号(singlequote) 被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。 heyyou=homeecho'$heyyou'#Weget$heyyou "string"双引号(doublequote) 被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。 heyyou=homeecho"$heyyou"#Weget
9、home `command`倒引号(backticks) 在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用倒单引号来做。 fdv=`date+%F`echo"Today$fdv" 在倒引号内的date+%F会被视为指令,执行的结果会带入fdv变数中。 ,逗点(comma,标点中的逗号) 这个符号常运用在运算当中当做"区隔"用途。如下例 #!/bin/bashlet"t1=((a=5+3,b=7-1,c=15/3))"echo"t1=$t1,a=$a,b=$
10、b" /斜线(forwardslash) 在路径表示时,代表目录。 cd/etc/rc.dcd../..cd/ 通常单一的/代表root根目录的意思;在四则运算中,代表除法的符号。 let"num1=((a=10/2,b=25/5))" \倒斜线 在交互模式下的escape字元,有几个作用;放在指令前,有取消aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。 #typermrmisaliasedto`rm-i'#\rm./*.log 上例,我在rm指令前加上escap
11、e字元,作用是暂时取消别名的功能,将rm指令还原。 #bkdir=/home#echo"Backupdir,\$bkdir=$bkdir"Backupdir,$bkdir=/home 上例echo内的\$bkdir,escape将$变数的功能取消了,因此,会输出$bk