shell脚本

目录

一、test命令

二、比较数值

三、字符串比较

四、短路与短路或

五、()和{}

六、if语句

1.分支结构

七、脚本小测试

1.测试1检测当前用户是否为管理员

2.测试2检测与真机是否网络通畅

3.测试3检测输入的成绩评分

4.测试4检测httpd服务

5.测试5创建用户

6.测试6安装nginx

八、case语句

总结:本章主要介绍了shell的部分基础知识和部分小脚本


一、test命令

1.作用:测试文件的表达式是否成立

2.选项

-e 测试文件和目录是否存在

-f 测试是否为文件

-r 测试当前用户是否有读取权限

-w 测试当前用户是否有写的权限

-x 测试当前用户是否有执行的权限

test和[]作用相同

使用[]内部两边需要有空格

linux中使用判断

1.test

2.[]

3.[[]] 加强版的单个[]可以使用正则表达式和通配符(匹配字符串)如果使用[[]]判断是否相等用[[ == ]]

shell脚本_第1张图片

二、比较数值

1.公式:[ 整数1 -操作符 整数2 ]

2.选项

-eq :第一个数等于第二个数

-ne :第一个数不等于第二个数

-gt :第一个数大于第二个数

-lt :第一个数小于第二个数

-ge :第一个数大于等于第二个数

-le :第一个数小于等于第二个数

shell脚本_第2张图片

三、字符串比较

= 字符串内容相同

shell脚本_第3张图片

!= 字符串内容不相同

-z 字符串内容为空

shell脚本_第4张图片

-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

shell脚本_第5张图片

六、if语句

1.分支结构

1.单分支

if 判断条件;

then  

条件为真的分支代码

fi

2.双分支

if 判断条件;

then  

条件为真的分支代码

else  

条件为假的分支代码

fi

3.多分支

if 判断条件1
then
 条件1为真的分支代码

elif 判断条件2
then
 条件2为真的分支代码

elif 判断条件3;then
 条件3为真的分支代码

...
else
 以上条件都为假的分支代码  托底

fi

七、脚本小测试

1.测试1检测当前用户是否为管理员
#!/bin/bash
if [ "$USER" != "root" ]
then
        echo "非管理员用户无权限操作"
else
echo "是管理员用户"
fi

shell脚本_第6张图片

2.测试2检测与真机是否网络通畅
#!/bin/bash
ping -c 3 192.168.91.1
if
        [ $? = 0 ]
then
        echo "与真机网络通顺"
        exit 1
fi
        echo "与真机网络不通"

shell脚本_第7张图片

shell脚本_第8张图片

3.测试3检测输入的成绩评分
#!/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


shell脚本_第9张图片

shell脚本_第10张图片

4.测试4检测httpd服务
#!/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

shell脚本_第11张图片
shell脚本_第12张图片

5.测试5创建用户
#!/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


shell脚本_第13张图片

shell脚本_第14张图片

6.测试6安装nginx
#!/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


shell脚本_第15张图片

shell脚本_第16张图片

八、case语句

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

shell脚本_第17张图片

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

shell脚本_第18张图片

shell脚本_第19张图片

3.小型菜单

cat <

shell脚本_第20张图片

shell脚本_第21张图片

总结:本章主要介绍了shell的部分基础知识和部分小脚本

你可能感兴趣的:(linux,运维)