$0 脚本名称
$# 脚本后接收的参数个数
$n 当前执行脚本的第n个参数,大于9的要用{}括起来
$@ 获取当前脚本的所有传参,加引号"$@"="$1" "$2" "$3"
$* 获取当前脚本的所有传参,加引号"$*"="$1 $2 $3"
$? 获取上个指令的执行状态返回值
$$ 当前执行的脚本进程号
$!上一个执行的脚本进程号
${parameter} 返回变量$parameter的内容
${#parameter} 返回变量$parameter内容的长度(按字符),也适合特殊变量*
${parameter:offset} 在变量${parameter}中,从位置offset之后开始提取子串到结尾
${parameter:offset:length} 在变量${parameter}中,从位置offset之后开始提取长度为length的子串
#删除
${parameter#word} 从变量${parameter}【开头】开始删除最【短】匹配的word子串
${parameter##word} 从变量${parameter}【开头】开始删除最【长】匹配的word子串
${parameter%word} 从变量${parameter}结尾开始删除最短匹配的word子串
${parameter%%word} 从变量${parameter}结尾开始删除最长匹配的word子串
#类似sed替换
${parameter/pattern/string} 使用string代替第一个匹配的pattern
${parameter//pattern/string} 使用string代替所有匹配的pattern
获取变量内容长度的方法:
echo $OLDBOY|wc -L
echo ${#OLDBOY}
expr length "$OLDBOY"
echo $OLDBOY|awk '{print length}'
echo $OLDBOY|awk '{print length($0)}'
result=${test:-unset}----------------变量名=${值:-替换值}(当值为空时会用替换值代替原有值)
数值运算:
1)整数运算:
方法1:
let a=a+1
方法2:推荐小括号
((a=a+1))
方法3:尽量不用做运算
expr $a + 111
方法4:
echo $[$a+11]
方法5:
declare -i a=a+10
整数或者小数运算:
bc(内置计算器)
echo 1+2|bc
(()) 逻辑判断
a=10
((a++)) 递归增加,默认步长为1
((a--)) 递归减小,默认步长为1
expr功能:
1)计算
expr 10 + 10
2)获取字符串长度
expr length "$a"
3)判断字符串是否为整数数字或字符
expr $a + 1 &>/dev/null
echo $?
0
expr $a + 1 &>/dev/null
echo $?
2
4)用来判断文件扩展名是否符合指定扩展名
[root@web01 /server/scripts]# cat judge.sh
if expr "$1" : ".*\.avi$" >/dev/null ; then
echo "好兴奋啊"
else
echo "好失望啊"
fi
[root@web01 /server/scripts]# sh judge.sh oldboy.avi
好兴奋啊
[root@web01 /server/scripts]# sh judge.sh oldboy.log
好失望啊