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

shell(5)--case菜单和echo

文章目录

    • case菜单
      • case语句的概念
      • case语句的基本格式
      • 示例:Shell脚本菜单
      • 输出变量值
      • 禁用转义字符(默认行为)
      • 禁止末尾换行
      • 输出到文件
      • 特殊字符处理
      • 显示命令执行结果
      • 常见问题解决

case菜单

case语句的概念

case语句是一种多分支条件判断结构,用于基于变量或表达式的值匹配不同模式并执行对应代码块。它比多个if-elif语句更简洁,适合处理固定范围的条件匹配(如菜单选择、状态码处理等)。


case语句的基本格式

语法结构如下:

case $变量 in  模式1)  命令1  ;;  模式2|模式3)  命令2  ;;  *)  默认命令  ;;  
esac
  • 模式:支持通配符(如*匹配任意字符,?匹配单个字符)和逻辑或(|)。
  • ;;:表示当前模式对应的代码块结束。
  • *):默认分支,相当于if-else中的else
  • esaccase的反写,表示结构结束。

示例:Shell脚本菜单

以下是一个交互式菜单的示例脚本,通过case实现功能选择:

#!/bin/bash  
while true; do  echo "1. 查看系统信息"  echo "2. 显示磁盘使用"  echo "3. 退出"  read -p "请输入选项(1-3): " choice  case $choice in  1)  echo "系统信息如下:"  uname -a  ;;  2)  echo "磁盘使用情况:"  df -h  ;;  3)  echo "退出菜单。"  exit 0  ;;  *)  echo "无效选项,请重新输入!"  ;;  esac  echo  # 空行分隔每次菜单显示  
done

管理服务的菜单

read -p "请问你需要管理哪个服务:" SERVICE 
read -p "请问你需要进行什么管理(status--查看状态,stop--停止,restart--重启)" CONTROL 
case ${CONTROL} in 
status)     systemctl status ${SERVICE}     ;; start)     systemctl start ${SERVICE}     ;; stop)     systemctl stop ${SERVICE}     ;; *)   echo "输入有误"   ;; esac    
```---### 关键注意事项  
- **模式匹配**:默认是通配符匹配,若需精确匹配数字或字符串,避免使用通配符(如直接写`3)`而非`3*)`)。  
- **终止符**:每个分支必须以`;;`结束,否则会继续执行下一个分支的代码。  
- **默认分支**:建议始终包含`*)`分支以处理意外输入。  ## echo
### echo命令的基本功能  
`echo` 是一个在终端输出文本或变量的基础命令,适用于所有主流的操作系统(如Linux、macOS、Windows的PowerShell)。直接输入`echo`后接内容,会将内容原样显示在屏幕上。  **示例:**  
```bash
echo "Hello World"

输出结果为:

Hello World

输出变量值

echo 可以显示环境变量或用户自定义变量的值。变量需以$符号开头。

示例:

name="Alice"
echo "Welcome, $name!"

输出结果为:

Welcome, Alice!

禁用转义字符(默认行为)

默认情况下,echo 会将反斜杠\视为普通字符。若需启用转义字符(如\n换行),需添加-e选项。

示例:

echo -e "Line 1\nLine 2"

输出结果为:

Line 1
Line 2

禁止末尾换行

通过-n选项,可以取消输出末尾的自动换行符。

示例:

echo -n "No newline"
echo " continued"

输出结果为:

No newline continued

输出到文件

使用重定向符号>>>可将echo内容写入文件(覆盖或追加)。

覆盖文件内容:

echo "New content" > file.txt

追加内容到文件末尾:

echo "More content" >> file.txt

特殊字符处理

若需输出包含特殊符号(如$")的文本,可用单引号''包裹,或使用反斜杠\转义。

示例:

echo 'Cost: $5'
echo "Quote: \"To be or not to be\""

显示命令执行结果

通过反引号 $()嵌套命令,echo 可输出其他命令的结果。

示例:

echo "Today is $(date)"

输出结果为当前日期,例如:

Today is Mon Jul 1 12:00:00 UTC 2024

常见问题解决

  1. 变量不生效:确保变量已正确定义且无拼写错误。
  2. 换行无效:检查是否遗漏-e选项。
  3. 权限问题:写入文件时需确保对目标目录有写权限。
http://www.dtcms.com/a/594817.html

相关文章:

  • 动易网站模版的制作衡水网站开发
  • 就业服务网站建设方案才艺多网站建设平台
  • 天猫优惠卷怎么做网站个人不能建设论坛网站怎么办
  • 娱乐网站建设流程WordPress 三图
  • 【代码审计】h3blog 两处安全问题分析
  • 字符串匹配和回文串类题目
  • Ansible 基础知识总结
  • 宁波余姚网站建设wordpress判断文章id
  • 深入解析wordpress 原书第2版 pdf 下载重庆企业网站优化
  • 蓝桥杯零基础到获奖-第4章 C++ 变量和常量
  • AI芯片产品经理操作手册
  • 教做甜品网站源码网站建设教程
  • 大型门户网站有哪些企业网站建设存在的问题
  • wordpress微信拦截青岛关键词优化排名
  • 电源模块冲击电流测试如何测试,需要哪些设备?-纳米软件
  • 广告网站建设制作设计c2c的网站
  • 【MicroPython编程-ESP32篇】-BME680传感器驱动
  • 电脑上制作网站的软件手机端网站建设教程视频教程
  • 网站qq代码做电商网站用什么语言
  • Docker容器的一次迁移
  • Android Studio移动应用基础教程(前言)
  • 莱芜网站建设流程网站备案号没有-1
  • 哪些网站收录排名好建立网站的申请
  • 建设银行网站登录不了目前较流行的网站开发框架
  • 创建web项目踩坑记录
  • 自己服务器做网站服务器备案1个人做多网站负责人
  • 燃烧100克脂肪换算多少卡路里?
  • idea做网站贵州省住房和城乡建设网站
  • 网站建设前期应该做哪些准备wordpress 多媒体 权限
  • 网站开发word文档安卓手机app制作