shell脚本下常用的符号组合及转移字符

在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行;对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之。这里我将shell中常用的一些符号组合及使用规则罗列如下:

1、$@  为传递的参数

2、$#  为传递参数的数量

3、$? 是shell变量,表示"最后一次执行命令"的退出状态,一般0表示成功,非0数值表示没有成功。

切记:$?永远表示shell命令最后一次执行后的退出状态,当函数执行完毕后,如果又执行了其它命令,则$?不再表示函数执行后的状态,而表示其它命令的退出状态. 

4、$! 代表pid,进程id 

5、$$ 代表ppid,父进程id

6、* 代表全部的意思,比如 echo *会将当前目录下的所有的文件打印出来。

7、双引号 使用双引号,可引用除了字符$、`、\外的任意字符或字符串双引号可以使具有特殊含义的词失去其原本的意义

 (1)在脚本文件中输入 date ,执行脚本之后会在终端打印当前的年月日。

 (2)在脚本文件中输入DATE=“date”,echo  $DATE 执行脚本之后会在终端打印出 date, 而不是当前的年月日,这里“”就使date命令失去了原有的意思,这里仅作为一个字符串赋值给变量DATE。

8、单引号
单引号与双引号类似,不同的是shell会忽略任何引用值,即屏蔽的单引号内的特殊字符的原本含义。
如:echo ‘today is $date’其结果为:today is $date。

注意:单引号和双引号的区别

单引号‘’:取消除单引号以外的任何字符的特殊含义。
如:echo ‘today is $date’其结果为:today is $date,此时$只作为一个普通字符使用了。 
双引号“”:取消除双引号$号以及_号以外的所有字符的特殊含义
单引号是强引用,引号里的值是什么,变量的值就是什么
双引号是弱引用,引号里的值若再包含变量,那在赋值的时候,所有这些变量就被立即替换了

echo "usrname is:$LOGNAME"   结果:usrname is:yeexun
echo "usrname is:'$LOGNAME'" 结果:usrname is:'yeexun'
echo "usrname is:"$LOGNAME"" 结果:usrname is:yeexun

echo 'usrname is:$LOGNAME'   结果:usrname is:$LOGNAME
echo 'usrname is:"$LOGNAME"' 结果:usrname is:"$LOGNAME"
echo 'usrname is:'$LOGNAME'' 结果:usrname is:yeexun

9、反引号

在脚本文件下,按下键盘上Tab键上面的那个键,输入的就是反引号,反引号(`)用于设置系统命令输出到变量,shell认为反引号中的内容是一个系统命令。也可以使用$()来引用一个命令,但是反引号中不能在引用反引号,而$()可以在引用反引号。
在脚本文件中输入 echo `date`,执行脚本之后会在终端打印当前的年月日Mon Dec 24 16:06:55 CST 2012这和在终端直接输入date命令是一样的:
date
Mon Dec 24 16:07:12 CST 2012
若输入一个非系统命令,则shell不认识此命令,将会报错:
echo `DATE`
ksh: DATE: not found

10、反斜杠
反斜杠的作用是将一些特殊字符按原样输出,这些特殊字符有:$、*、`、+、^、&、|、"、?。
例如:echo *     将当前目录下的文件名和目录名都列出来。
echo \*    *     而使用反斜杠转义之后,就输出了星号。


 

 

 

你可能感兴趣的:(linux,shell-脚本)