Linux中bash编程
bash编程也叫shell编程
预定义变量
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确的执行;如果这个变量返回的值非0(具体是那个数,有命令自己来决定),则证明上一个命令执行不正确。
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)
运算符
declare 声名变量的类型
declare [+/-][选项] 变量名
- 给变量设定类型属性
+ 取消变量的类型属性
-i 将变量声名为整数型
-x将变量什申明为环境变量
-p 显示指定变量的被声名的类型
举例:
a=1 b=2 declare -i c = $a+$b c=$(($a+$b))
注意用双小括号,因为Linux中认为一切皆为字符。
如果不加()当成一个命令,shell脚本中Linux命令在 $() 中运行,当然可以直接写命令,如果则一些引用命令时 就要 $()
单分支if 条件语句
if [ 条件判断式 ];then 程序 fi or if [ 条件判断式 ] then 程序 fi
判断登录用户是否为root用户:
#!/bin/bash #grep 获取行通配符 #cut 获取列统配符,以 = 分割 2 获取第二列 login_name=$(env | grep LOGNAME | cut -d "=" -f 2) #echo $login_name if [ "$login_name" != "root" ] then echo 'isnot root' fi
判断根分区的占用率
#!/bin/bash #df -h 任性话显示磁盘的利用率 #awk 获取第五列 #cut 对字符用 % 进行分割 获取第一列值 result=$( df -h | grep sda1 | awk '{print $5}' | cut -d % -f 1) if [ "$result" -lt '90' ] then echo 'the root dir is not full' fi
双分支if条件语句
if [ 条件判断式 ] then ... else ... fi
判断nginx 是否在运行 (最好不用包含nginx作为文件名)
#!/bin/bash result=$(ps aux | grep nginx | grep -v grep) if [ -n "$result" ] then echo "$(date) nginx is ok !" else echo "$(date) nginx is not ok !" sudo /etc/init.d/nginx start &>/dev/null echo "$(date) restart nginx !!" fi
多分支if语句
if [] then elif [] then ... else ... if