第十六周-day66-67—Shell编程day03-04(1)

[root@shell day04]#
[root@shell day04]# source /server/scripts/day04/test1.sh
hello oldchang
hello2 2oldboychang
hello3 3oldoychang
[root@shell day04]# hello #优先调用了函数
hello oldchang


##### 5.3 函数的退出状态码



> 
> 脚本的退出状态码,使用exit定义,之后脚本退出
> 
> 
> 函数的退出状态码,使用return定义,之后函数退出
> 
> 
> 



[root@shell day04]# vim test1.sh
1 #!/bin/bash
2 ##############################################################
3 # File Name: test1.sh
4 # Version: V1.0
5 # Author: lcx
6 # Organization: www.oldboyedu.com
7 ##############################################################
8 #
9 #
10 function hello(){
11 if [ -f “/etc/hosts” ];then
12 echo “文件存在”
13 else
14 return 2
15 fi
16 }
17 hello
18 echo $?
[root@shell day04]# sh test1.sh
文件存在
0


##### 5.4 带参数的函数


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1kYzdjYmYzZTM2YmZmMWZkLnBuZw)



[root@shell day04]# vim test2.sh
1 #!/bin/bash
2 function hello {
3 echo “hello $1”
4 }
5 hello $1
[root@shell day04]# sh test2.sh oldboy
hello oldboy



[root@shell day04]# vim test2.sh
1 #!/bin/bash
2 function hello {
3 echo “hello $1 $2” #定义2个参数
4 }
5 hello $1 $2
[root@shell day04]# sh test2.sh oldboy oldchang
hello oldboy oldchang


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1mMGU4MmNjZGRkNmI0YjY1LnBuZw)


##### 5.5 位置函数



[root@shell day04]# cat test3.sh
#!/bin/bash
function hello {
echo “hello $*”
}
hello $# 1 " 1 " 1"*"
[root@shell day04]# sh test3.sh 1 2 3
hello 3 1 1 2 3



> 
> 第二种方法,也是最常用的方法
> 
> 
> 



[root@shell day04]# cat test3.sh
#!/bin/bash
function hello {
echo “脚本名称: $0”
echo “函数的参数个数: $#”
echo “第一个参数: $1”
echo “显示所有参数: $*”
echo “执行状态码: $?”
}
hello $*
[root@shell day04]# sh test3.sh 1 2 3 4 5
脚本名称: test3.sh
函数的参数个数: 5
第一个参数: 1
显示所有参数: 1 2 3 4 5
执行状态码: 0



> 
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1iOWE1MWI2OTE2ODUzN2M1LnBuZw)
> 
> 
> 



> 
> 作业:将nginx启动脚本修改为函数格式
> 
> 
> 




---


#### 6.case语句


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS05YTgyYmFhMTZmODIxZjc2LnBuZw)  
 ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1hYTA3NWQ4ZWIyOTJiY2E2LnBuZw)  
 ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS0wY2NkZGNmMzhhZDZkMWQxLnBuZw)


##### 6.1 case条件语句练习


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS05ZjczMjM2NzMzMDVmMmFiLnBuZw)



[root@shell day04]# cat case1.sh
#!/bin/bash
##############################################################

File Name: case1.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
case “$1” in
“start”|“START”)
echo “已启动”
;;
“stop”|“STOP”)
echo “已停止”
;;
*)
echo “你tm说的啥”
esac
[root@shell day04]# sh case1.sh start
已启动
[root@shell day04]# sh case1.sh stop
已停止
[root@shell day04]# sh case1.sh xxx
你tm说的啥
[root@shell day04]# sh case1.sh START
已启动
[root@shell day04]# sh case1.sh STOP
已停止



> 
> **练习题**
> 
> 
> 


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS00MjZjMTBjZGY5NmM3OTM4LnBuZw)


##### 6.2 练习


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS04MzdjNmE5NDg2NWU2ZTRjLnBuZw)


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS01MjFhNjRkZTkwMzQ0MDhiLnBuZw)


###### 6.2.1 使用case判断是数字还是字母



> 
> 编写脚本,使用单个字符进行传参,使用case判断是数字还是字母
> 
> 
> 



[root@shell day04]# cat case2.sh
#!/bin/bash
##############################################################

File Name: case1.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
case “$1” in
[0-9])
echo “这是数字$1”
;;
[a-Z])
echo “这是字母$1”
;;
*)
echo “你tm输的啥”
exit
esac

[root@shell day04]# sh case2.sh v
这是字母v
[root@shell day04]# sh case2.sh A
这是字母A
[root@shell day04]# sh case2.sh 5
这是数字5
[root@shell day04]# sh case2.sh 0
这是数字0


###### 6.2.2 将” 打印菜单修改成case或if语句



> 
> **2、 将” 打印菜单,按照选择项一键安装不同的web服务”脚本,将其中的条件表达式修改成case或if语句**
> 
> 
> 



#case语句

[root@shell day04]# cat web.sh
#!/bin/bash
##############################################################

File Name: zuoye02.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
#检测脚本是否存在且非空,是否可执行
file1=[ -s /server/scripts/lamp.sh ]&& echo ture||echo fluse
file2=[ -s /server/scripts/lnmp.sh ]&& echo ture||echo fluse
exec1=[ -x /server/scripts/lamp.sh ]&& echo ture||echo fluse
exec2=[ -x /server/scripts/lnmp.sh ]&& echo ture||echo fluse
case “KaTeX parse error: Undefined control sequence: \0 at position 38: … echo -e "\̲0̲33[32mlamp.sh脚本…exec1” in
ture)
echo -e “\033[32mlamp.sh脚本文件可以执行\033[0m”
;;
*)
echo -e “\033[31mlamp.sh脚本文件不可执行!!!\033[0m”
esac
case “KaTeX parse error: Undefined control sequence: \0 at position 38: … echo -e "\̲0̲33[32mlnmp.sh脚本…exec2” in
ture)
echo -e “\033[32mlnmp.sh脚本文件可以执行\033[0m”
;;
*)
echo -e “\033[31mlnmp.sh脚本文件不可执行!!!\033[0m”
esac
#打印菜单,按照选择项一键安装不同的web服务
cat << EOF
echo -e "\033[35m (1).[install lamp]\033[0m"
echo -e "\033[36m (2).[install lnmp]\033[0m"
echo -e "\033[33m (3).[exit]\033[0m"
EOF

read -p “please input the num you want:” num
#安装lamp与lnmp环境
case “$num” in
1)
echo start installing LAMP
sleep 1
/server/scripts/lamp.sh
exit
;;
2)
echo start installing LNMP
sleep 1
/server/scripts/lnmp.sh
exit
;;
3)
echo 即将退出脚本…
sleep 1
exit
;;
*)
echo Input Error输入不识别!,启动自毁程序…
sleep 2
echo 再见人类…
sleep 2
exit
esac



> 
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS01MjExZDkzNjgzOGQxNmM5LnBuZw)
> 
> 
> 



#if语句

[root@shell day04]# cat /server/scripts/day03/zuoye02.sh
#!/bin/bash
##############################################################

File Name: zuoye02.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
#检测脚本是否存在且非空,是否可执行
file1=[ -s /server/scripts/lamp.sh ]&& echo ture||echo fluse
file2=[ -s /server/scripts/lnmp.sh ]&& echo ture||echo fluse
exec1=[ -x /server/scripts/lamp.sh ]&& echo ture||echo fluse
exec2=[ -x /server/scripts/lnmp.sh ]&& echo ture||echo fluse
if [ $file1 = “ture” ];then
echo “lamp.sh脚本文件存在且非空”
else
echo “lamp.sh脚本文件不存在或是一个空文件!!!”
fi
if [ $exec1 = “ture” ];then
echo lamp.sh脚本文件可以执行
else
echo lamp.sh脚本文件不可执行!!!
fi
if [ $file2 = “ture” ];then
echo lnmp.sh脚本文件存在且非空
else
echo lnmp.sh脚本文件不存在或是一个空文件!!!
fi
if [ $exec2 = “ture” ];then
echo lnmp.sh脚本文件可以执行
else
echo lnmp.sh脚本文件不可执行!!!
exit
fi
#打印菜单,按照选择项一键安装不同的web服务
cat << EOF
echo -e "\033[35m (1).[install lamp]\033[0m"
echo -e "\033[36m (2).[install lnmp]\033[0m"
echo -e "\033[34m (3).[exit]\033[0m"
EOF

read -p “please input the num you want:” num
#安装lamp环境
if [ $num = “1” ];then
echo start installing LAMP
sleep 1
/server/scripts/lamp.sh
exit
elif [ $num = “2” ];then
echo start installing LNMP
sleep 1
/server/scripts/lnmp.sh
exit
elif [ $num = “3” ];then
echo 即将退出脚本…
sleep 1
exit
elif [ $num != “{1…3}” ];then
echo Input Error输入不识别!,启动自毁程序…
sleep 2
echo 再见人类…
sleep 2
exit
fi


###### 6.3 将Nginx服务改为case方式+函数方式



> 
> **3、 将Nginx服务管理脚本改为case方式+函数方式,并通过systemctl进行控制启动停止**
> 
> 
> 


先将nginx编译好



yum install -y gcc-c++ pcre-devel zlib-devel #下载依赖
tar xf nginx-1.17.1.tar #解压到当前目录
cd nginx-1.17.1/ #切换到解压后的目录下
./configure --prefix=/usr/local/nginx #路径随意
make && make install



[root@shell ~]# ll /usr/local/nginx/sbin/nginx
-rwxr-xr-x 1 root root 3830336 Jul 18 09:19 /usr/local/nginx/sbin/nginx
[root@shell ~]# cd /etc/init.d/
[root@shell init.d]# touch nginx
[root@shell init.d]# chmod +x nginx



> 
> #if方式+函数方式
> 
> 
> 



[root@shell init.d]# vim nginx #
#!/bin/bash
##############################################################

File Name: nginx.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
if [ “$1” = “start” ];then
nginx
echo “nginx服务启动成功”
fi
if [ “$1” = “stop” ];then
#查看当前nginx进程是否存在,非0则存在
if [ ss -lntup|grep nginx|wc -l -eq 0 ];then
echo “nginx处于关闭状态”
else
pkill nginx
fi
fi
if [ “$1” = “restart” ];then
#先关闭
if [ ss -lntup|grep nginx|wc -l -eq 0 ];then
echo “nginx处于关闭状态”
else
pkill nginx
sleep 1
fi
nginx
echo “nginx服务重启成功”
fi



> 
> #case方式+函数方式
> 
> 
> 





#为nginx添加systemd启动文件
[root@shell init.d]# cd /usr/lib/systemd/system
[root@shell system]# cat nginx_oldboy.service
[Unit]
Description=nginx service
After=nginx_oldboy.target

[Service]
Type=forking
ExecStart=/etc/init.d/nginx start
ExecReload=/etc/init.d/nginx restart
ExecStop=/etc/init.d/nginx stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target



#检查是否可以启动关闭重启
[root@shell system]# ss -lntup|grep nginx
[root@shell system]# systemctl start nginx_oldboy.service #启动
[root@shell system]# ss -lntup|grep nginx
tcp LISTEN 0 128 *:80 : users:((“nginx”,pid=15894,fd=6),(nginx",pid=15893,fd=6))
[root@shell system]# systemctl stop nginx_oldboy.service #关闭
[root@shell system]# ss -lntup|grep nginx
[root@shell system]# systemctl restart nginx_oldboy.service #重启
[root@shell system]# ss -lntup|grep nginx
tcp LISTEN 0 128 *:80 *😗 users:((“nginx”,pid=15926,fd=6),(nginx",pid=15925,fd=6))


###### 6.4 使用case选择水果,打印水果名及其颜色



> 
> 1、 使用case选择水果,并打印水果名及其颜色
> 
> 
> 



#给到的要求与条件
1.apple
2.pear
3.banana
4.blueberry
其中,颜色表达式分别为
31m 红色
32m 绿色
33m 黄色
34m 蓝色
使用方式为
[root@oldboy-node101 ~]# echo -e “\E[1;31m我是红色 \E[0m”
我是红色
[root@oldboy-node101 ~]# echo -e “\E[1;32m我是绿色 \E[0m”
我是绿色
[root@oldboy-node101 ~]# echo -e “\E[1;33m我是黄色 \E[0m”
我是黄色
[root@oldboy-node101 ~]# echo -e “\E[1;34m我是蓝色 \E[0m”
我是蓝色
1)打印菜单
2)使用read,显示一句话“选择你喜欢的水果”
3)使用case判断数字是【1|2|3|4】
4)如果都不符合,报错退出




#### 7.while循环


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1lODkzMGJmNzJiNzVkMzY3LnBuZw)


##### 7.1 while语法


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS00ZjgzYTUwYmVkZmNhMzMxLnBuZw)


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS05NzExNGQwYjZkOTk0YmJlLnBuZw)


##### 7.2 while按行读入文件


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS1kOGRkNTRjNjc0YmZkNDNhLnBuZw)



> 
> **练习**  
>  处于学习阶段,欢迎补充更完美的答案
> 
> 
> 1.while循环从1加到100,然后再额外使用两种方式计算
> 
> 
> 2.while循环读入数据,计算文件内的年龄平均值
> 
> 
> 3.将第6章的练习1,改为死循环的形式。菜单中加入选项exit,只有输入exit才能退出
> 
> 
> 



> 
> 1.while循环从1加到100,然后再额外使用两种方式计算
> 
> 
> 



[root@shell day04]# cat while3.sh
#!/bin/bash
##############################################################

File Name: while3.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
#while循环从1加到100,然后再额外使用两种方式计算
a=0
while [ $a -lt 100 ];do
let a++
echo $a
done
[root@shell day04]# sh while3.sh
1
2
3
4

100



#第二种
[root@shell day04]# echo “(1+100)*100/2”|bc
5050



> 
> 2.while循环读入数据,计算文件内的年龄平均值
> 
> 
> 



[root@shell day04]# cat age.txt
jiaojiao 20
yingqian 20
jiangyuan 25
xiaolu 30
xuxu 18
dingsheng 38
lili 5
[root@shell day04]# cat while4.sh
#!/bin/bash
##############################################################

File Name: while3.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
#计算平均年龄,文件是/server/scripts/age.txt
#a=echo cat age.txt|awk '{print $2}'
sum=0
count=0
while read line;do
age=echo $line|awk '{print $2}'
let sum= s u m + {sum}+ sum+{age}
let count++
done < 1 e c h o " 1 echo " 1echo"sum/$count"|bc
[root@shell day04]# sh while4.sh age.txt
22



> 
> 3.将第6章的练习1,改为死循环的形式。菜单中加入选项exit,只有输入exit才能退出
> 
> 
> 



[root@shell day04]# cat caidan.sh
#!/bin/bash
#打印菜单,按照选择项选择你喜欢的人物
prefix="I guess you like "
#菜单
while true ;do
cat << EOF
echo -e "\033[32m 1.棋王\033[0m"
echo -e "\033[33m 2.女神\033[0m"
echo -e "\033[34m 3.娘炮\033[0m"
echo -e "\033[35m 4.铁人\033[0m"
echo -e "\033[36m 5.退出\033[0m"
EOF
read -p "please input the num you like: " num
if [ n u m = " 1 " ] ; t h e n e c h o " num = "1" ];then echo " num="1"];thenecho"prefix"黑嘉嘉
elif [ n u m = " 2 " ] ; t h e n e c h o " num = "2" ];then echo " num="2"];thenecho"prefix"高圆圆
elif [ n u m = " 3 " ] ; t h e n e c h o " num = "3" ];then echo " num="3"];thenecho"prefix"打篮球的那个蔡徐坤? Are You OK??
elif [ n u m = " 4 " ] ; t h e n e c h o " num = "4" ];then echo " num="4"];thenecho"prefix"鹿晗…
elif [ $num = “5” ];then
echo “即将退出…”
sleep 1
exit
else
echo “输入错误!请重新输入”
fi
done



> 
> ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS0zMjk4NDQ2ZTcxNzlhNGMxLnBuZw)
> 
> 
> 




---


#### 7.3 练习


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS03ZDVhMzAwODNiMWI5MWQ4LnBuZw)


###### 1、猜数字游戏:



> 
> 首先让系统随机生成一个数字,给这个数字定一个范围,让用户输入猜的数字,对输入的数字进行判断,如果不符合要求,就给与高或低的提示,猜对后给出猜对用的次数,请用while语句实现。
> 
> 
> 


![image.png](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xNjk1MjE0OS05YzdlZTRmNzk1YmZiNzBmLnBuZw)


echo  
 
 
 
 
 ( 
 
 
 ( 
 
 
 
 (( 
 
 
 ((RANDOM%99+1)) 0到100随机数字



[root@shell lianxi]# cat 2.1.sh
#!/bin/bash
##############################################################

File Name: 2.1.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
#定义输入的次数
total=0
#定义字符集
export LANG=“zh_CH.UTF-8”
#生成0到100随机数字并清除
num= ( ( R A N D O M e c h o " 生成随机数为 ((RANDOM%101)) echo "生成随机数为 ((RANDOMecho"生成随机数为num"
echo “============================”
usleep 100000
clear
echo “客官~猜一猜我奶奶多大年龄了?
请输入[1-100]的整数”
#定义检测输入值的函数age

age(){
read -p “客官~请输入你猜的年龄: " num1
#判断是否为整数
expr $num1 + 1 &>/dev/null
if [ $? -ne 0 ];then
echo “(⊙o⊙)…输入格式错了呢~客官”
age
fi
}
#定义输入值反馈函数
point(){
#调用total累计客官输入次数
((total++))
if [ $num1 -eq n u m ] ; t h e n e c h o " 客官 您真是个天才 ! 恭喜您获得奶奶一车 " e c h o " 我奶奶今年 num ];then echo "客官~您真是个天才!恭喜您获得奶奶一车" echo "我奶奶今年 num];thenecho"客官 您真是个天才!恭喜您获得奶奶一车"echo"我奶奶今年{num}岁”
echo 一共猜了${total}次
exit 0
elif [ $num1 -gt $num ];then
echo “客官~我奶奶老年轻了!您猜的太大了”
echo "再来一次!加油~: "
age
elif [ $num1 -lt $num ];then
echo “客官~我奶奶比我大!您猜的太小了”
echo “再来一次!加油~”
age
fi
}
#定义循环此脚本函数,猜对年龄后退出,猜错则从point函数中调用age函数继续猜
main(){
age
while true
do
point
done
}
main
[root@shell lianxi]# sh 2.1.sh
生成随机数为58

客官~猜一猜我奶奶多大年龄了?
请输入[1-100]的整数
客官~请输入你猜的年龄: 50
客官~我奶奶比我大!您猜的太小了
再来一次!加油~
客官~请输入你猜的年龄: 80
客官~我奶奶老年轻了!您猜的太大了
再来一次!加油~
客官~请输入你猜的年龄: 60
客官~我奶奶老年轻了!您猜的太大了
再来一次!加油~
客官~请输入你猜的年龄: 55
客官~我奶奶比我大!您猜的太小了
再来一次!加油~
客官~请输入你猜的年龄: 57
客官~我奶奶比我大!您猜的太小了
再来一次!加油~
客官~请输入你猜的年龄: 58
客官~您真是个天才!恭喜您获得奶奶一车
我奶奶今年58岁
一共猜了6次


###### 2.使用if和while实现菜单系统信息案例:



> 
> ​ h 显示命令帮助 sleep 2刷新菜单
> 
> 
> ​ f 显示登录信息 who
> 
> 
> ​ d 显示磁盘挂载 fdisk -l
> 
> 
> ​ m 查看内存使用 free -h
> 
> 
> ​ u 查看系统负载 uptime
> 
> 
> ​ q 退出程序
> 
> 
> 



[root@shell lianxi]# cat menu.sh
#!/bin/bash
##############################################################

File Name: menu.sh

Version: V1.0

Author: lcx

Organization: www.oldboyedu.com

##############################################################
export LANG=“zh_CH.UTF-8”
user=who|wc -l
free1=free -h|awk 'NR==2{print $3/$2\*100}'
free2=${free1/.*/}
uptime=uptime|awk '{print $NF}'
while true ;do
cat << EOF
echo -e "\033[32m [h].显示命令帮助\033[0m"
echo -e "\033[32m [f].显示登录信息\033[0m"
echo -e "\033[32m [d].显示磁盘挂载\033[0m"
echo -e "\033[32m [m].查看内存使用\033[0m"
echo -e "\033[32m [u].查看系统负载\033[0m"
echo -e "\033[35m [q].退出程序\033[0m"
EOF
read -p "请输入要查询的信息编号: " NUM
if [ “KaTeX parse error: Undefined control sequence: \0 at position 54: …r echo -e "\̲0̲33[32m\n\t\t\t\…NUM” = “f” ];then
echo -e “\033[32m\n\t\t\t\t当前在登录[KaTeX parse error: Undefined control sequence: \0 at position 8: user]用户\̲0̲33[0m" who …NUM” = “d” ];then
echo -e “\033[32m\n\t\t\t\t[当前磁盘挂载情况!]\033[0m”
fdisk -l
elif [ “KaTeX parse error: Undefined control sequence: \0 at position 32: …n echo -e "\̲0̲33[32m\n\t\t\t\…free2%]\033[0m”
free -h
elif [ “KaTeX parse error: Undefined control sequence: \0 at position 32: …n echo -e "\̲0̲33[32m\n\t\t\t\…uptime]\033[0m”
uptime
elif [ “$NUM” = “q” ];then
echo “bye~客官”
exit 0
else
echo -e “\033[31m\n\t\t\t\t输出格式不对!请重新输入编号\033[0m”
fi
done



> 
> **实现效果**
> 
> 
> 



[root@shell lianxi]# sh menu.sh
[h].显示命令帮助
[f].显示登录信息
[d].显示磁盘挂载
[m].查看内存使用
[u].查看系统负载
[q].退出程序
请输入要查询的信息编号: h

			[刷新成功!]
 [h].显示命令帮助
 [f].显示登录信息
 [d].显示磁盘挂载
 [m].查看内存使用
 [u].查看系统负载
 [q].退出程序

请输入要查询的信息编号: f

			当前在登录[3]用户

root tty1 Jul 18 15:17
root pts/0 Jul 18 08:34 (10.0.0.1)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

ec69e6499adead0da6e95b.png)

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-tTUCGWbg-1712916684705)]

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值