shell反引号 单双引号 设置变量 特殊变量

2015-04-25 16:23:00
admin
原创 3701
摘要:shell反引号 单双引号 设置变量 特殊变量

一、反引号

反引号和$()起着命令替换的作用,把命令的标准输出插在命令行的任何位置,注意会去除末尾换行符。

echo `date "+%Y-%m-%d %H:%M:%S"`

echo $(date "+%Y-%m-%d %H:%M:%S")


二、单双引号

1、双引号忽略多数特殊字符,但不包括$和`双引号变量只是传递给变量时带双引号;

2、单引号告诉shell忽略所有特殊字符,单引号变量传递给变量或者命令时带单引号

3、单引号支持定义C语言转义字符串,$属性具备传递性,v1和v2都有$属性;

     v1=$'a\nb' && v2="\n$v1" && set

     v1=$'a\nb'

     v2=$'\\na\nb'


三、设置变量(派生shell会导入现有shell的环境变量)

设置变量:key=value或key=$var,value不能有空格,$var变量可以有空格,set命令查看设置结果

设置变量到命令输出:key=`cmd`,命令输出可以有空格,C式转义字符串根据内容自动设置;

设置动态变量:eval base$num=value,eval作用是先计算字符串,然后将字符串放到shell执行;

脚本导出变量:export key=value,需要使用source命令,只需导出一次,env命令查看设置结果;

清除变量:unset key,清除环境变量或普通变量,变量只能是环境变量或普通变量;


四、特殊变量

1、$0,脚本名;

2、$1,$9,${10},位置参数,shift命令修改位置参数队列及位置参数个数;
3、$#,位置参数的个数;

4、$*,所有参数组成的字符串;

5、$@,每个参数作为一个独立的字符串,$*=$@,"$*"!="$@"后者在for循环时有差别;

6、$?,返回值;

7、$$,脚本的进程PID;
8、$!,运行在后台的最后一个作业的进程PID;

9、$HOME,HOME目录,shell和crontab都可以拿到;

发表评论
评论通过审核之后才会显示。