【shell脚本】shell脚本之函数、中断控制、字符串截取处理等(shell脚本基础学习三)_shell if 中断

59 阅读2分钟

编写一键源代码安装nginx的脚本 #!/bin/bash yum -y install gcc openssl-devel pcre-devel &> /dev/null tar -xf nginx-1.12.2.tar.gz cd nginx-1.12.2 ./configure make make install

运行脚本后,nginx自动安装完毕 cd /usr/local/nginx/sbin/ 前往nginx主程序所在目录 ./nginx 执行程序(开启nginx网站服务) 关闭防火墙后,在真机打开浏览器输入虚拟机的地址可以看到网站

#!/bin/bash case $1 in st) /usr/local/nginx/sbin/nginx ;; stop) /usr/local/nginx/sbin/nginx -s stop ;; re) /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx ;; *) echo "st开启|stop关闭|re重启" esac

完善脚本: #!/bin/bash case 1inst)/usr/local/nginx/sbin/nginx;;stop)/usr/local/nginx/sbin/nginxsstop;;re)/usr/local/nginx/sbin/nginxsstop/usr/local/nginx/sbin/nginx;;sa)netstatntulpgrepqnginx[1 in st) /usr/local/nginx/sbin/nginx ;; stop) /usr/local/nginx/sbin/nginx -s stop ;; re) /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx ;; sa) netstat -ntulp |grep -q nginx [ ? -eq 0 ] && echo "服务正在运行" || echo "服务没有开启" ;; *) echo "st开启|stop关闭|re重启|sa查询状态" esac

修改输出字体颜色 echo -e "\033[32mABCD\033[0m" 输出不通颜色的ABCD echo -e "\033[33mABCD\033[0m" echo -e "\033[34mABCD\033[0m"

函数 1)函数的定义方法

格式1:

function 函数名 { 命令序列 .. .. }

格式2:

函数名() { 命令序列 .. .. }

使用函数编写方便调用不同颜色字体的脚本: #!/bin/bash cecho (){ echo -e "\033[1m1m2\033[0m" }

cecho 31 ABCDEFG cecho 32 ABCDEFG cecho 33 ABCDEFG cecho 34 ABCDEFG cecho 35 ABCDEFG cecho 36 ABCDEFG cecho 37 ABCDEFG

#!/bin/bash abc(){ abc|abc & } abc

================================== 循环的控制: exit 退出脚本 break 终止循环,执行循环之后的任务 continue 终止当前循环,继续下一次循环

#!/bin/bash for i in {1..10} do [ i -eq 5 ] && continue echo i done echo ok

#!/bin/bash for i in {1..10} do [ i -eq 5 ] && break echo i done echo ok

字符串的处理 1,字符串的截取 变量名:起始位置:长度如果是第1,那么起始位置是0b=1802874632定义变量echo{变量名:起始位置:长度} 如果是第1位,那么起始位置是0 b=1802874632 定义变量 echo {b:3:4} 截取变量的内容从第4位开始截取4位 echo ${b::4} 起始位置是0的话可以省略不写

编写随机获取1位字符的脚本: #!/bin/bash x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ RSTUVWXYZ0123456789 n=[RANDOMecho[RANDOM%62] echo {x:n:1}

编写获取随机8位密码的脚本 #!/bin/bash x=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS TUVWXYZ0123456789 for i in {1..8} do n=[RANDOMp=[RANDOM%62] 获取0~61之间的随机数字 p={x:n:1} 获取1位随机字符 pass=passpassp 将每次获取的随机字符赋值给变量pass done echo $pass

2,字符串的替换 格式:变量名/old/newb=1802874632echo{变量名/old/new} b=1802874632 echo {b/1/a} 将1替换为a echo b/8/a8替换为aecho{b/8/a} 将8替换为a echo {b//8/a} 将所有8替换为a echo ${b/0/} 将数字0替换为空,相当于删除

3,字符串的删除 {变量名#*关键词} 从左往右删除 掐头 echo a root:x:0:0:root:/root:/bin/bash echo {a#root} 删除到第一个root echo {a##root} 删除到最后一个root,以及此root左边所有 echo {a##*/} 删除到最后一个/,以及此/左边所有 echo {a#:root} 删除:root,以及左边所有

{变量名%关键词*} 从右往左删除 去尾 echo {a%bash} 从右往左删除到bash echo {a%root*} 从右往左删除到第一个root,以及root右边所有 echo {a%/} 从右往左删除到第一个/,以及/右边所有 echo ${a%%/} 从右往左删除到最后一个/,以及/右边所有

利用字符串删除功能,编写批量修改文件扩展名的脚本: #!/bin/bash