Shell编程总结

目录

[0.关于 ( ),\` \`,{ },\[ \],(( )),[ ],(( )),[[ ]]](#0.关于 ( ),` `,{ },[ ],(( )),[ ],(( )),[[ ]])

[1.if 判断](#1.if 判断)

[2.case 语句](#2.case 语句)

[3.for 循环](#3.for 循环)

[4.while 循环](#4.while 循环)

5.函数

[6.应用:监测 MySQL 数据库异常](#6.应用:监测 MySQL 数据库异常)


0.关于 ( ),\` \`,{ },\[ \],(( )),[ ],(( )),[[ ]]

  1. $( ) 与 ` ` (反引号) 都是用做命令替换
  2. **{ }** 用于**变量替换**。一般情况下,var 与${var} 并没有不一样。但是用 ${ } 会比较精确的界定变量名称的范围。
  3. $[ ] $(( )) 是一样的,都是进行数学运算。支持+ - * / %:分别为 "加、减、乘、除、取模"。但是bash只能作整数运算,浮点数当作字符串处理。
  4. [ ] 即为test命令的另一种形式。
  5. **(( )) [[ ]]**分别是[ ]的针对数学比较表达式和字符串表达式的加强版。其中(( )),不需要再将表达式里面的大小于符号转义。

1.if 判断

bash 复制代码
#基本语法
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
else
程序
fi
bash 复制代码
#!/bin/bash
read -p "input two number": a b
if [ $a -lt $b ]; then
 echo "$a < $b"
elif [ $a -eq $b ]; then
 echo "$a = $b"
else
 echo "$a > $b"
fi

2.case 语句

bash 复制代码
#基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意
bash 复制代码
#!/bin/bash
case $1 in
"1")
    echo "aaa"
;;       #相当于break
"2")
    echo "bbb"
;;
*)
    echo "ccc"
;;
esac

3.for 循环

bash 复制代码
#基本语法
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

for 变量 in 值 1 值 2 值 3...
do
程序
done
bash 复制代码
#!/bin/bash
sum=0
for((i=0;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum

#!/bin/bash
for i in aaa bbb ccc
do
echo $i
done

4.while 循环

bash 复制代码
#基本语法
while [ 条件判断式 ]
do
程序
done
bash 复制代码
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum

5.函数

bash 复制代码
#基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
bash 复制代码
#!/bin/bash
function sum()
{
s=0
s=$[$1+$2]
echo "$s"
}

read -p "Please input the number1: " n1;
read -p "Please input the number2: " n2;
sum $n1 $n2;

6.应用:监测 MySQL 数据库异常

bash 复制代码
#安装mysql: 
yum install mysql-server -y  #CentOS
systemctl start mysqld

sudo apt-get install mysql-server  #Ubuntu
systemctl start mysql
bash 复制代码
#!/bin/bash
#or $(netstat -lntup|grep 3306|wc -l)
if [ `netstat -lntup|grep 3306|wc -l` -gt 0 ]; then
 echo "MySQL is Running"
else
 echo "MySQL is Stopped"
 systemctl start mysqld
fi
相关推荐
IT果果日记5 分钟前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教8 分钟前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特21 分钟前
环境变量简介
linux
小陈phd1 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!1 小时前
【Linux】进程状态
linux·运维
明明跟你说过1 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
Komorebi.py2 小时前
【Linux】-学习笔记05
linux·笔记·学习
Mr_Xuhhh3 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
内核程序员kevin6 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
朝九晚五ฺ10 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习