位置变量
- $0 代表了脚本的名称,如何全路径执行,则脚本名称带全路径
使用方法 给用户提示
#basename test.sh #只显示脚本名称
- $n 脚本的第N个参数 0被脚本名称占用 从1开始 $1 $2…$9后面的参数需要加{}
- $# 获取脚本传参的总个数, 控制脚本的传递参数的个数 [ $# -ne 2 ] && echo “请输入两个参数” && exit
- $* 获取脚本所有的参数 不加双引号和$@相同,加上双引号 则把参数视为一个参数$1$2$3
- $@ 获取脚本所有的参数,不加双引号和$相同,加上双引号则把参数是为独立的参数 $1 $2 $3 $和$@在脚本中相同,在循环体内不同
- $? 获取上一条命令的执行状态结果 0为成功 非0为失败
- $$ 获取脚本的PID
- $! 获取上一个在后台运行的脚本的PID 调试使用
-
环境变量
查看: env set
变量生效顺序
/etc/profile 开机所有用户开机加载此文件
.~/.bashrc
.bash_profile
.bashrc
/etc/bashrc数值运算
expr 整数运算
expr a + b
- $(()) 整数运算
$((a+b))
- $[] 整数运算
$[a+b]
- bc 整数运算和小数运算
echo a+b|bc
-e 是否存在 存在为真
-f 是否为文件
-d 是否为目录 是否存在
-x 是否为可执行
-r 存在是否可读
-w 存在是否可写
数值比较
语法格式 [ a 比较符 b ]
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
[[]] 建议用 == != > < >= <= 比较符
题目1:统计磁盘使用率,如果磁盘大于80% 则发送邮件报警,小于则提示ok
1.取出磁盘当前使用率
# DiskUseRate=df -h| grep /$ | awk '{print $(NF-1)}'
2.用数字表达式判断大下,如果大于则发送邮件,小于则提示ok
# [ ${DiskUseRate%\%} -gt 80 ] && echo “磁盘使用已超过百分之5,当前使用率为$DiskUseRate |mail -s “test” 505597482@qq.com” || echo “磁盘使用正常,当前使用率为$disk”
题目2:内存使用率超过80%报警,小于则提示ok
#UseMem= free | awk 'NR==2{print $3/$2*100}'
#[ ${UseMem%.*} -gt 80 ] && echo mail || echo ok
多整数比较
字符串比较
=
!=
字符串比较需要加双引号
-z 字符串长度为零则为真
-n 字符串长度不为零则为真
正则比较
linux路由条目配置
route add default gw 10.0.0.254
route del default gw 10.0.0.254
ip route add 0/0 via 10.0.0.254
ip route del 0/0 via 10.0.0.254
网卡添加多个地址
ip addr add 10.0.0.200/24 dev ens32
for i in {50..200};do ip addr add 10.0.0.$i/24 dev ens32; done
策略路由 VPN拨号会使用
# cat /etc/iproute2/rt_tables
添加一个表, 给这个表设置一个路由
ip route add 0/0 via 10.0.0.254 table test
ip rule add from PUBLIC_IP table test