Shell编程 Case 和 函数的小练习
#!/bin/bash
shname=`basename $0`free () {
/usr/bin/free -h | awk 'NR==2{print $7}'
}disk () {
/usr/bin/df -h | awk '/sd/{print $1"\t"$5}'
}ipaddr () {
ifconfig ens32 | awk 'NR==2{print $2}'
}select i in "内存" "磁盘信息" "IP地址" "退出"
docase $i in 内存 )free;;磁盘信息 )disk;;IP地址 )ipaddr;;退出 )exit;;* )echo "use $shname {1|2|3|4}";;esac
done
#!/bin/bash
installnginx (){#设置安装nginx的版本(可以自定义)
nginxlevel=nginx-1.20.1#判断是否以root用户执行此脚本
if [ $UID -ne 0 ];
thenecho "请使用Root用户执行$0"exit
fi#判断是否接入网络
ping baidu.com -c4 >/dev/nullif [ $? -ne 0 ];
thenecho "执行$0需要访问到互联网..."echo "请检查与互联网的连接后再试..."exit
fi#判断系统是否安装过nginx
exist=$(whereis nginx | awk '{print $2}')if [ ! -z "${exist}" ];
thenecho "您的系统已经部署过nginx了..."echo "或您的系统还有nginx残留文件..."echo "可以使用 "whereis nginx" 和 "find / -name nginx" 查找清空掉残留文件..."exit
fi#安装依赖环境
yum install -y gcc openssl-devel pcre-devel zlib-devel lsof wgetgroupadd -r nginx
useradd -r -g nginx -s /sbin/nologin -M nginx
mkdir -pv /var/tmp/nginx
wget -P /root http://nginx.org/download/"$nginxlevel".tar.gz
tar -zxvf /root/"$nginxlevel".tar.gz -C /root sleep 3
#编译安装
cd /root/"$nginxlevel"
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre
make && make installsleep 3#删除无用文件和路径
rm -rf /root/"$nginxlevel" /root/"$nginxlevel".tar.gzsleep 3
#设置nginx开机自启动
echo "#nginx开机自启动" >>/etc/rc.d/rc.local
echo "mkdir -p /var/run/nginx && touch /var/run/nginx/nginx.pid" >>/etc/rc.d/rc.local
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.d/rc.local
#重载配置文件
chmod +x /etc/rc.d/rc.local#启动nginx
/usr/local/nginx/sbin/nginxif [ $? -eq 0 ];
thenecho "===============Nginx安装完毕==============="echo "================Nginx已启动================"
elseecho "===============Nginx安装失败==============="echo "=============请检查系统环境配置============="
fi}uninstallnginx (){dirnginx=$(whereis nginx | awk '{print $2}')
read -p "是否要卸载nginx 输入(y|n)确认! " answer
if [ ${answer} == y ];
then rm -rf /run/nginx /etc/nginx /var/tmp/nginx /var/log/nginx /usr/local/nginxsleep 5#清空系统启动脚本中带有"nginx"的行sed -i "/nginx/d" /etc/rc.d/rc.localsleep 2#杀掉nginx进程pkill nginxif [[ $? -eq 0 ]]; thenecho ""echo "==========nginx 卸载成功!=========="echo ""elseif [[ -z ${dirnginx} ]]; thenecho "您未安装nginx..."fifi
elif [ ${answer} == n ];
thenexit
elseecho "输入(y|n)确认!"exit
fi
}installredis (){#redis的编译安装
redislevel=6.2.7
exist=$(whereis redis | awk '{print $2}')fname=/root/redis-${redislevel}.tar.gz#判断是否以root用户执行改脚本
if [ $UID -ne 0 ];
thenecho "请用root用户执行$0"exit
fi#判断是否安系统是否装过redis
if [ ! -z "${exist}" ];
thenecho "您的系统已经部署过redis了..."echo "或您的系统还有redis残留文件..."echo "可以使用 "whereis redis" 和 "find / -name redis" 查找清空掉残留文件..."exit
fi#检测网络通信情况
ping baidu.com -c4 > /dev/null
if [[ $? -ne 0 ]];
thenecho "请检查网络连接情况后在执行$0..."exit
elseecho "网络连接检测..."echo "OK!"
fiecho "开始安装..."#安装基础环境
yum install -y gcc wget#判断目录下是否有这个文件没有就wget
if [[ ! -e ${fname} ]];
thenwget -P /root http://download.redis.io/releases/redis-${redislevel}.tar.gz#判断下载是否成功if [[ $? -ne 0 ]]; thenecho "=================redis软件包下载失败...================="echo "=============请查看软件包版本配置是否正确==============="echo ""exitfi
fi#解压至指定目录下
tar -zxvf /root/redis-${redislevel}.tar.gz -C /root
sleep 3cd /root/redis-${redislevel}
make && make install PREFIX=/usr/local/redis
#安装路径可以自定义
cp /root/redis-${redislevel}/redis.conf /usr/local/redis/bin/
#修改redis.conf配置文件允许后台启动
sed -i 's/daemonize no/daemonize yes/g' /usr/local/redis/bin/redis.conf
sleep 3
#加入系统启动项
echo "[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target" >/etc/systemd/system/redis.servicesleep 2
#删除无用的文件
rm -rf /root/redis-${redislevel} /root/redis-${redislevel}.tar.gz#启动redis服务
systemctl daemon-reload
systemctl enable redis.service
systemctl start redis.serviceif [[ $? -eq 0 ]];
thenecho ""echo "===============redis安装完毕==============="echo "================redis已启动================"echo ""
elseecho ""echo "=============redis安装失败请检查配置...==============="echo ""rm -rf /etc/systemd/system/redis.serviceexit
fi}uninstallredis (){read -p "确认要卸载redis吗? {y|n} " answerif [[ ${answer} == y ]]; thenwhereis redis | awk '{print $2}' | xargs rm -rfrm -rf /etc/systemd/system/redis.servicepkill redisif [[ $? -eq 0 ]]; thenecho "redis 卸载成功!"elseecho "redis 卸载失败!或您没有安装redis 请检查后再试"fi elif [[ ${answer} == n ]]thenexitelseecho "输入 y or n 来确认是否卸载!"fi
}PS3="输入1-6选择你要的服务: "
select i in "安装nginx" "卸载nginx" "安装redis" "卸载redis" "帮助" "退出脚本"
docase $i in安装nginx )installnginx;;卸载nginx )uninstallnginx;;安装redis )installredis;;卸载redis )uninstallredis;;帮助 )echo "$0 {1|2|3|4|5|6}";;退出脚本 )exit;;* )echo "$0 {1|2|3|4|5|6}"esac
done
Shell编程 Case 和 函数的小练习相关推荐
- shell编程--case判断
case基础语法: 格式 case 变量名 in value1) command ;; value2) command ;; *) commond ;; esac 在case程序中,可以在条件中使用 ...
- Shell编程(一):小工具
一.文本处理工具 1. grep工具 grep是**行**过滤工具:用于根据关键字进行行过 语法: # grep [选项] '关键字' 文件名 常见选项: OPTIONS:-i: 不区分大小写-v: ...
- shell编程 case语句
case语句格式 # vi test.sh : echo "input : " read num echo "the input data is $num" c ...
- Linux Shell编程语句case
Linux Shell编程case语句 case语句 case语句适用于需要进行多重分支的应用情况. case分支语句的格式如下:case $变量名 in模式1)命令序列1;;模式2)命令序列2;; ...
- gnu linux额外支持的运算符,《Shell编程从入门到精通》张昊-chap1-8
缘起 20190314开始复习及学习吧: 张昊编著: 内容 目录 i(9/314) 全书11章 chap1 第1个Shell程序 1(13/334) 1.1.第一道菜 [echo.sh] #!/bin ...
- Shell编程基础语法
1.Shell编程概述 Shell是一个命令行解释器,它接收应用程序或用户的命令,然后调用操作系统内核. Shell还是一个功能强大的编程语言,易编写.易调试.灵活性强. ①Linux系统提供的She ...
- shell编程之函数和case多条件分支语句
shell编程之函数和case多条件分支语句 函数介绍 函数语法定义 通过函数编写功能脚本 case语句 case条件分支语句介绍 函数介绍 函数介绍: shell 中允许将一组命令集合或语句形成一段 ...
- linux shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select 学习笔记
SHELL编程一UNIX和Shell工具简介 什么是shell? shell只是一个程序,它在系统中没有特权.因此,有多个不同风格shell共同存在原因--Bourne Shell,Korn Shel ...
- shell编程之条件语句(文件测试,test命令,字符串和逻辑测试,if单支语句,if双支语句,if多支语句,case命令,用if写跑步小实验)
文章目录 shell编程之条件语句 条件测试 test命令 整数值测试 free -m 提供了更简洁的查看系统内存使用情况: 字符串和逻辑测试 字符串 逻辑测试 一元运算符,二元运算符和三元运算符 i ...
最新文章
- 你所不知道的Python奇技淫巧
- 每个网页设计师应该知道的10条CSS规则
- Sublime Text 3 安装Package Control及配置Python环境
- 基于React Native和Ethers.js的电子钱包(三):Ethers.js
- 关于anaconda顺利安装之后,cmd提示conda不是内部命令的问题
- web.xml中如何配置Servlet文件
- mingW与cygwin 异同
- win7电脑0x000007b蓝屏怎么办
- 机器视觉的典型应用及领域分析
- Windows下架设SVN服务
- 【wpa_supplicant】driver如何告诉supplicant自己做的一些事情以及结果
- 数据治理:携程度假的数据治理实践
- 物联网的核心技能是什么?
- VB6 MsgBox 函数
- 快速云:关于云技术未来的六大趋势
- Java 经典设计模式-- 05.并发型模式
- 乐视网:截至2月已逾期金融机构借款类债务20.84亿元
- 中国FPGA芯片技术解析
- 音量调节器Music Equalizer1.9
- 西北工业大学发布消息,成立光电与智能研究院。