目录
1.作用:测试文件的表达式是否成立
2.选项
-e 测试文件和目录是否存在
-f 测试是否为文件
-r 测试当前用户是否有读取权限
-w 测试当前用户是否有写的权限
-x 测试当前用户是否有执行的权限
test和[]作用相同
使用[]内部两边需要有空格
linux中使用判断
1.test
2.[]
3.[[]] 加强版的单个[]可以使用正则表达式和通配符(匹配字符串)如果使用[[]]判断是否相等用[[ == ]]

1.公式:[ 整数1 -操作符 整数2 ]
2.选项
-eq :第一个数等于第二个数
-ne :第一个数不等于第二个数
-gt :第一个数大于第二个数
-lt :第一个数小于第二个数
-ge :第一个数大于等于第二个数
-le :第一个数小于等于第二个数

= 字符串内容相同

!= 字符串内容不相同

-z 字符串内容为空

-n 字符是否存在

1.短路与
全真才为真一假即假
cmd1 && cmd2 cmd1和cmd2都为真才为真
cmd1或cmd2有一个假就全部为假
如果第一个为假 ,整个 就为假 不用执行下个操作
2.短路或
全假为假一真为真
cmd1 || cmd2 cmd1和cmd2有一个为真就是真
cmd1和cmd2全假才为假
如果第一个 为真 那么 不用执行第二个操作
常见条件
-a或&&:逻辑与,“而且”的意思全真才为真
-o或||:逻辑或,“或者”的意思一真即为真
!:逻辑否
(CMD1;CMD2;...)和 { CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行
( cd /opt;ls ) 切换目录并查看
pwd 查看当前路径
{ cd /opt;ls; }
pwd

1.单分支
if 判断条件;
then
条件为真的分支代码
fi
2.双分支
if 判断条件;
then
条件为真的分支代码
else
条件为假的分支代码
fi
3.多分支
if 判断条件1
then
条件1为真的分支代码
elif 判断条件2
then
条件2为真的分支代码
elif 判断条件3;then
条件3为真的分支代码
...
else
以上条件都为假的分支代码 托底
fi
- #!/bin/bash
- if [ "$USER" != "root" ]
- then
- echo "非管理员用户无权限操作"
- else
- echo "是管理员用户"
- fi


- #!/bin/bash
- ping -c 3 192.168.91.1
- if
- [ $? = 0 ]
- then
- echo "与真机网络通顺"
- exit 1
- fi
- echo "与真机网络不通"


- #!/bin/bash
- read -p "请输入你的成绩:" b
- if [ $b -ge 90 -a $b -le 100 ]
- then
- echo "优秀"
- elif [ $b -ge 70 -a $b -lt 90 ]
- then
- echo "良好"
- elif [ $b -eq 60 ]
- then
- echo "及格"
- elif [ $b -lt 60 ]
- then
- echo "不及格"
- else
- bash $0
- fi


- #!/bin/bash
- ss -natp |grep 80
- if [ $? -eq 0 ]
- then
- echo "http服务已开启"
- else
- systemctl start httpd &>/dev/null
- ss -natp |grep 80
- if [ $? -eq 0 ]
- then
- echo "http服务已开启"
- else
- echo "http服务开启失败"
- fi
- fi


- #!/bin/bash
- read -p "请输入你要新建的用户:" name
- read -p "请输入你要密码:" mima
- grep $name /etc/passwd &>/dev/null
- if [ $? -eq 0 ]
- then
- echo "用户名重复了"
- else
- useradd $name
- echo "$mima" |passwd --stdin $name
- echo "创建成功"
- fi


- #!/bin/bash
- wget http://nginx.org/download/nginx-1.18.0.tar.gz -P /opt
- if [ $? -eq 0 ]
- then
- echo "下载成功"
- else
- echo "下载失败"
- fi
-
- cd /opt
- tar xf nginx-1.18.0.tar.gz
- cd nginx-1.18.0
- ./configure --prefix=/apps/nginx
- if [ $? -eq 0 ]
- then
- echo "环境检查成功"
- else
- echo "环境检查失败"
- fi
- make -j2 && make install
- if [ $? -eq 0 ]
- then
- echo "编译成功"
- else
- echo "编译失败"
-
-
- then
- echo "编译成功"
- else
- echo "编译失败"
- fi
- ln -s /apps/nginx/sbin/* /usr/bin
- echo "
- [Unit]
- Description=nginx - high performance web server
- Documentation=http://nginx.org/en/docs/
- After=network-online.target remote-fs.target nss-lookup.target
- Wants=network-online.target
- [Service]
- Type=forking
- PIDFile=/apps/nginx/logs/nginx.pid
- ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
- ExecReload=/bin/kill -s HUP $MAINPID
- ExecStop=/bin/kill -s TERM $MAINPID
- LimitNOFILE=100000
- [Install]
- WantedBy=multi-user.target
- " > /usr/lib/systemd/system/nginx.service
- systemctl start nginx
- if [ $? -eq 0 ]
- then
- echo "启动成功"
- else
- echo "启动失败"
- fi



case 多分支结构
case 变量值 in 模式1
命令序列1)
;;
模式2
命令序列2
;;
...
*)
默认命令序列
esac
1.case检测成绩
- #!/bin/bash
- read -p "请输入你的分数" score
-
- case $score in
- 100)
- echo "$score 优秀"
- ;;
- [89][0-9])
- echo "$score 良好"
- ;;
- [67][0-9])
- echo "$score 及格"
- ;;
- [0-9]|[1-5][0-9])
- echo "$score 不及格"
- ;;
- *)
- echo "输入有误"
- esac


2.小游戏脚本
- #!/bin/bash
- m=`echo $[RANDOM%3+1]`
- read -p "请输入 1.石头2.剪刀3.布:" h
-
-
- if [ $m -eq $h ]
- then
- echo "打成平局"
- bash $0
- elif [ $h -eq 1 -a $m -eq 2 -o $h -eq 2 -a $m -eq 3 -o $h -eq 3 -a $m -eq 1 ]
- then
- echo "人类胜利"
- else
- echo "机器胜利"
- fi


3.小型菜单
- cat <<EOF
- 1.查看读写
- 2.查看磁盘
- 3.查看内存
- EOF
-
- read -p "请输入数字(1-3):" num
- case $num in
- 1)
- vmstat $web1
- ;;
- 2)
- lsblk -f $mysql
- ;;
- 3)
- free -h $doker
- ;;
- esac

