当前位置: 首页 > news >正文

Linux系统shell脚本(三)

条件判断case语句

格式

#!/bin/bash
#case $1 in
#[0-9])
#    command1
#;;
#[a-z])
#    command2
#;;
#*)
#    command3
#;;
#esac

案例1:条件1【0-9】输出的是数字;条件2【a-z】输出是字母;都不是输出都不是

#!/bin/bash
case $1 in
[0-9])echo "number"
;;
[a-z])echo "letter"
;;
*)echo "no!"
;;
esac

案例二:对nginx服务进行启动检测

#!/bin/bash
#c2508
#nginx start or stop script
case $1 in
start)status1=$(netstat -anptu | grep [n]ginx | wc -l)if [ $status1 -ge 1 ]thenecho "进程已启动"elsenginxfi
;;
stop)status1=$(netstat -anptu | grep [n]ginx | wc -l)if [ $status1 -eq 0 ]thenecho "进程已停止"elsenginx -s stopfi
;;
reload)nginx -s reload
;;
restart)status1=$(netstat -anptu | grep [n]ginx | wc -l)if [ $status1 -eq 0 ]thenecho "进程已停止"elsenginx -s stopfi

案例三:工作选项

while true
docat <<EOF
请选择:
1.备份文件
2.清理日志文件
3.软件升级
4.软件回滚
5.删库跑路
6.按q退出
EOF
read -p "请选择工作类型:" n1
case $n1 in
1)echo "备份文件"
;;
2)echo "清理日志文件"
;;
3)echo "软件升级"
;;
4)echo "软件回滚"
;;
5)echo "删除跑路"
;;
q)exit
;;
*)

for循环语句

格式1:

# 第一种写法
for NAME [in words ...]; do commands;done# 第二种写法
for 变量 in 列表循环体
done# 第三种写法
for 变量 in 列表
do循环体
done

执行机制:

依次将列表中的元素赋值给”变量名“;每次赋值后即执行一次循环体;直到列表中的元素耗尽,循环结束

格式2:

双小括号方法,即((…))格式,也可以用于算术运算,双小括号方法也可以使用bash shell 实现C语言风格的变量操作l=10;((l++))

for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
do循环体
done

说明:

  • 控制变量初始化:仅在运行到循环代码段时执行一次

  • 控制变量的修正表达式:每轮循环结束后会先进行控制变量修正运算,然后在做条件判断

案例一:输出1-10

#!/bin/bash
for i in {1..10}
doecho $i
done

案例二:九九乘法表

#!/bin/bash
for i in `seq 1 9`
dofor j in `seq 1 $i`doecho -e -n "$i x $j = $[i*j]\t"doneecho
donefor ((i=1;i<=9;i++))
dofor ((j=1;j<=$i;j++))doecho -e -n "$j x $i = $[i*j]\t"doneecho
done

案例三:输出目标目录内容,并添加时间戳

#!/bin/bash
for i in $(ls /boot)
doecho ${i}.$(date +%s)
done

while循环语句

格式

hile command; do commands;donewhile condition;do 循环体 done!/bin/bash
i=1
while [ $i -le 10 ]
doecho $ilet i++
done

无限循环

while true;do循环体
done

案例:猜数游戏

脚本生成一个100以内得随机数,提示用户猜数字,根据用户得输入,提示用户猜小了或猜大了,直至用户猜对脚本结束

#!/bin/bashprice=$[RANDOM%1000]
while true
doread -p "请输入你猜的价格:"  guessif [ $guess -eq $price ]thenecho "猜对了"exitelif [ $guess -lt $price ]thenecho "小了"elseecho "大了"fi
done

http://www.dtcms.com/a/367213.html

相关文章:

  • 解密注意力计算的并行机制:从多头并张量操作到CUDA内核优化
  • 【Luogu_P5839】 [USACO19DEC] Moortal Cowmbat G【动态规划】
  • C语言(长期更新)第14讲:指针详解(四)
  • 第六章 Cesium 实现简易河流效果
  • FastDDS:第三节(3.2小节)
  • 规则引擎开发现在已经演化成算法引擎了
  • #T1359. 围成面积
  • Java并发编程:sleep()与wait()核心区别详解
  • 通过Interface扫描获取所有其实现类
  • AI 浪潮下阿里云“高光”乍现,但离终局胜利尚远
  • MySQL主从复制进阶(GTID复制,半同步复制)
  • 搭建基于 Solon AI 的 Streamable MCP 服务并部署至阿里云百炼
  • 鸿蒙NEXT动画开发指南:组件与页面典型动画场景解析
  • ios按键精灵提示 “设备信息丢失”如何处理?
  • 在Ant Design Vue 中使用图片预览的插件
  • Elixir通过Onvif协议控制IP摄像机,扩展ExOnvif的摄像头停止移动 Stop 功能
  • 【RNN-LSTM-GRU】第五篇 序列模型实战指南:从选型到优化与前沿探索
  • 对于数据结构:链表的超详细保姆级解析
  • 从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
  • 2025年财会领域专业资格认证选择指南
  • AR眼镜在智能制造的应用方向和场景用例|阿法龙XR云平台
  • BERT家族进化史:从BERT到LLaMA,每一次飞跃都源于对“学习”的更深理解
  • 【深度学习】P1 引言:深度学习的万家灯火
  • 网络安全初级-渗透测试
  • 下载apache-maven-3.6.1版本并配置maven镜像及本地仓库[超简单]
  • Hunyuan-MT-7B模型介绍
  • 告别低效广告!亚马逊关键词筛选全流程攻略
  • matlab版本粒子群算法(PSO)在路径规划中的应用
  • ultralytics/nn/tasks.py源码学习笔记——核心函数parse_model
  • 【正整数的最优分解2的次方和形式非0次方】2022-11-1