1. $
$0 获取当前执行脚本的文件名
$n 获取脚本的参数,n=1..9 10以后就要${10}
$# 脚本后边的总参数
$* 获取当前脚本的所有参数"$1 $2 $3"
$@ 获取当前脚本的所有参数,加了双引号"$@" "$1" "$2" "$3"
$? 获取上一个命令的执行状态的返回值,成功为0 不成功非0
$$ 获取当前执行shell脚本进程的pid
$! 获取上一个在后台工作的pid
$_ 获取在次之前执行命令或脚本的最后一个参数
2. echo
-n 不换行进行输出
-e 解释转义字符
转义字符
\n 换行
\r 回车
\t 制表符 tab
\b 退格
\v 纵向制表符
3. shift
语句会按如下的方式重新命名所有参数的位置,$2变成$1,向左减1
#!/bin/bash
echo $1 $2
if [ $# -eq 2 ];then
shift
echo $1
fi
[root@yw7 server]# sh s.sh 1 2
1 2
2
这个时候其实是$2的值2向前一个了,成了$1+
4. ${}
变量子串的说明
${bj} 返回变量的$bj内容
${#bj} 按照字符返回长度
${bj:offset} 从offset位置开始切割到结尾
${bj:offset:length} 从offset位置开始切割指定的长度
5. expr
整数的计算,相关字符串的长度,匹配
expr 2 + 2
expr 2 \* 2
expr 2 / 2
注意:数字的左右必须要有空格
i=5
i=`expr $i + 4`
echo $i
实战:
判断一个变量的值或字符串的值是否为整数
i=5
i=`expr $i + 4`
echo $?
0
此时判断是一个整数
i=yq
i=`expr $i + 4`
echo $?
2
此时不是
我们就可以通过传参的方式来确定是不是整数
expr $1 + 1 &>/dev/null
[ $? -eq 0 ]
来判断
expr的特殊用法,判断文件的扩展名是否符合要求
#!/bin/bash
if expr "$1" : ".*\.pub"* &>/dev/null
then
echo " you are using $1"
else
echo "you .gile"
fi
expr计算字符的长度
expr lenfth "$char"
6. bc
当做计算器来用
yum -y insatll bc
bc
echo 3+5|bc
i=5
i=`expr $i + 6|bc`