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
相关推荐
chlk1238 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑8 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件9 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号18 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux
崔小汤呀3 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应3 天前
vi编辑器使用
linux·后端·操作系统