shell反引号 单双引号 设置变量 特殊变量 回显说明
- 2015-04-25 16:23:00
- admin
- 原创 2977
一、反引号
反引号和$()起着命令替换的作用,把命令的标准输出插在命令行的任何位置,注意会去除末尾换行符。
echo `date "+%Y-%m-%d %H:%M:%S"`
echo $(date "+%Y-%m-%d %H:%M:%S")
二、单双引号
1、单引号告诉shell忽略所有特殊字符,单引号变量传递给变量或者命令时带单引号;
2、双引号忽略多数特殊字符,不包括$ 和`,表示$ 和`需要进行转义,双引号变量只是传递给变量时带双引号;
3、单引号支持定义C语言转义字符串,$属性具备传递性,v1和v2都有$属性;
v1=$'a\nb' && v2="\n$v1" && set
v1=$'a\nb'
v2=$'\\na\nb'
三、windows批处理反引号、单引号、双引号
反引号:没有反引号功能
单引号:不忽略%%变量解释
双引号:不忽略%%变量解释
四、设置变量(派生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,清除环境变量或普通变量,变量只能是环境变量或普通变量;
windows脚本设置变量:set key=value;
五、特殊变量
$0,脚本名
$1 - $9,位置参数
${10},位置参数
$#,位置参数的个数
$*,所有参数组成的字符串
$@,与$*含义相同,但每个参数做为一个独立的字符串,$*=$@,"$*"!="$@",后者在for循环时有差别;
$?,返回值
$$,脚本的进程PID
$!,运行在后台的最后一个作业的进程PID
$PATH,命令查找路径
$HOME,用户HOME目录,shell和crontab都可以拿到;
说明:shift命令用于修改位置参数队列以及位置参数个数。
六、回显说明
linux默认关闭回显;
windows默认开启回显,单条指令避免回显使用@,所有指令避免回显echo off;