运行shell
sh xx.sh 运行脚本 chmod+x ./xx.sh 执行权限并运行脚本 shell脚本说白了就是一堆linux命令写在一个文件里面,然后统一执行
变量
name="besttest" age=18 class=("1班" "2班" "3班" ) 输出全部 echo ${class[*]} ${name} $name echo ${class[2]} 数组取值
取长度
name="beijing" echo ${#name} echo ${#class[*]} echo ${class[*]}
输入、输出
echo "xxx" read name 单引号和双引号的区别 单引号是原样字符串,不会转义
运算
sum=`expr 1 + 1` sum2=`expr ${age} + 1`
条件判断 -- 数值型运算符
-eq 等于 -ne 不等于 -lt 小于 -gt 大于 -lte 小于等于 -gte 大于等于
字符串运算符
=
!=
if格式
echo "请输入年龄:" read age if [ $age -gt 18 ] then echo "成年人" elif [ $age -lt 18 ] then echo "未成年人" else echo "刚满18 岁" fi
and和or
age=8 if [ $age -gt 10 -a ` expr $age % 2 ` -eq 0 ] #if [ $age -gt 10 -o ` expr $age % 2 ` -eq 0 ] then echo "是大于10的偶数" fi
字符串判断 name="beijing" if [ $name != "beijing" ] then echo "北京" fi
循环 -- 循环数组
class=("1班" "2班" "3班" ) for item in ${class[*]} do echo $item done
for循环
for num in 1 2 3 4 5 6 do echo $num done
while循环
count=0 while [ $count -lt 10 ] do echo $count count=`expr $count + 1` done
函数
基本格式 my_print (){ echo "nihao" } 有入参的 oushu(){ number=$1 if [ 0 -eq `expr $number % 2` ] then echo "偶数" else echo "奇数" fi } oushu 5 oushu 4 直接用来判断的 abc="123" delete(){ st=`expr 1 \* 1024` file=$1 size=`du -k $file | awk '{print $1}'` if [ $size -gt $st ] then abc="文件大于100m" return 0 else return 1 fi } if delete "test2.sh" then rm -rf "test.sh" fi 获取返回结果的 delete "test2.sh" result=$? echo $result
重定向
content=`< test2.sh` echo $content keyword="nihao ya " #echo $keyword > aaa.txt echo $keyword >> aaa.txt
练习
启动mysql的脚本
arg=$1 pid=`ps -ef|grep /opt/lampp/sbin/mysqld |grep -v grep|awk '{print $2}'` command="/opt/lampp/lampp startmysql" stop_command="/opt/lampp/lampp stopmysql" start(){ if [ $pid ] then echo "mysql 已经启动了" else $command echo "mysql已启动" fi }
stop(){ if [ $pid ] then $stop_command echo "mysql 已经停止" else echo "mysql未启动" fi }
restart(){ stop start } if [ "$arg" = "stop" -o "$arg" = "start" -o "$arg" = "restart" ] then $arg else echo "请输入 start|stop|restart" fi
备份数据库的脚本
day=`date +%Y%m%d` file_name="/tmp/${day}_all_data.sql" mysqldump -uroot -p123456 -A > $file_name echo "mysql 备份完成!"