Bash 案例声明

2023-11-17

狂欢case当您有多个不同的选择时,语句通常用于简化复杂的条件。使用case语句而不是嵌套if语句将帮助您使 bash 脚本更具可读性且更易于维护。

狂欢case语句与Javascript或C有类似的概念switch陈述。主要区别在于,与 C 不同switch声明,Bashcase一旦找到并执行与该模式关联的语句,语句就不会继续搜索模式匹配。

在本教程中,我们将介绍 Bash 的基础知识case语句并向您展示如何在 shell 脚本中使用它。

case语句语法#

狂欢case声明采用以下形式:

case EXPRESSION in

  PATTERN_1)
    STATEMENTS
    ;;

  PATTERN_2)
    STATEMENTS
    ;;

  PATTERN_N)
    STATEMENTS
    ;;

  *)
    STATEMENTS
    ;;
esac
  • Each case声明以case关键字,后跟 case 表达式和in关键词。该声明以esac关键词。
  • 您可以使用由 分隔的多个模式|操作员。这)运算符终止模式列表。
  • 一个模式可以有特殊字符 .
  • 模式及其关联命令称为子句。
  • 每个子句必须以;;.
  • 执行与表达式匹配的第一个模式对应的命令。
  • 使用通配符星号是一种常见的做法(*)作为定义默认情况的最终模式。该模式将始终匹配。
  • 如果没有模式匹配,则返回状态为零。否则,返回状态为退出状态已执行的命令。

案例陈述示例#

这是一个使用的示例casebash 脚本中的语句将打印给定国家的官方语言:

语言.sh
#!/bin/bash

echo -n "Enter the name of a country: "
read COUNTRY

echo -n "The official language of $COUNTRY is "

case $COUNTRY in

  Lithuania)
    echo -n "Lithuanian"
    ;;

  Romania | Moldova)
    echo -n "Romanian"
    ;;

  Italy | "San Marino" | Switzerland | "Vatican City")
    echo -n "Italian"
    ;;

  *)
    echo -n "unknown"
    ;;
esac

将自定义脚本保存为文件并从命令行运行它。

bash languages.sh

该脚本将要求您输入一个国家/地区。例如,如果您输入“Lithuania”,它将匹配第一个模式,然后echo该子句中的命令将被执行。

该脚本将打印以下输出:

Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian

如果您输入的国家/地区与除默认通配符星号之外的任何其他模式都不匹配,例如阿根廷,脚本将执行回显命令在默认子句中。

Enter the name of a country: Argentina
The official language of Argentina is unknown

结论#

现在你应该已经很好地理解了如何编写 bashcase声明。它们通常用于从命令行向 shell 脚本传递参数。例如,初始化脚本正在使用case用于启动、停止或重新启动服务的语句。

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash 案例声明 的相关文章

  • 如何在 Bash 中删除字符串的第一部分?

    该代码将给出第一部分 但是如何删除它并获取没有第一部分的整个字符串 echo first second third etc cut d f1 你应该看看info cut 这将解释什么f1 means 实际上我们只需要第二个字段之后的字段 f
  • 如何运行 bash 压缩脚本?

    有没有一种方法可以直接运行带有 参数 的压缩bash脚本 而无需将其解压缩到文件中 然后运行解压缩的文件 例如 我需要使用一些给定的参数执行 setup mysql gzip 压缩脚本 n wordpress locahost 而不先解压缩
  • BASH 中带有千位分隔符的数字格式

    我有一个号码12343423455 23353 我想用千位分隔符格式化数字 所以输出将是12 343 423 455 23353 printf 3f n 12345678 901 12 345 678 901
  • 如何隐藏显示终端命令输出

    当我运行这个命令时 sudo htpasswd b home reynolds htpasswd admin admin 我正在得到输出Updating password for user admin在终端中 但我不想显示该输出 所以我在谷
  • 如何在bash中进行二进制加法

    我正在尝试将两个 32 位二进制数相加 其中之一是常数 address range in binary 另一个是数组的元素 IPinEachSubnet val 我正在尝试按照说明进行操作here https www linuxquesti
  • 需要 sudo 密码的 Bash 脚本

    我正在创建一个 Bash 安装程序脚本 它为 OSX 和 Linux 编译并安装一些库 因为我的脚本中的某些命令 make install apt get install port install 等 需要 sudo 所以我需要用户提供密码
  • 带变量的 AWK 负正则表达式

    我在 bash 脚本中使用 awk 来比较两个文件以获取不匹配的行 我需要将第二个文件的所有三个字段 作为一个模式 与第一个文件的所有行进行比较 第一个文件 chr1 9997 10330 HumanGM18558 peak 1 150 1
  • 在 bash 中快速引用 stdout(即上一个命令的输出)?

    有没有办法快速 例如通过键盘快捷键等 引用写入到 stdout 的上一个命令的输出 例如 如果我这样做 which rails 它回来了 usr local bin rails然后我想在 textmate 中打开该文件 我可以像这样重新输入
  • 编写一个 shell 脚本,find-greps 并在 1 行中输出文件名和内容

    要查看所有包含 abc 的 php 文件 我可以使用这个简单的脚本 find name php exec grep l abc 我可以省略 l 并且提取部分内容而不是文件名作为结果 find name php exec grep abc 我
  • 编写 shell 脚本以 am 或 pm 表示法显示时间

    我正在尝试编写一个 shell 脚本 以上午或下午的形式显示时间 而不是使用 date 命令显示时间 我不知道我应该如何去做这件事 我想对于初学者来说 如何从日期命令中提取时间来操作它 我如何提取小时数来操纵它 您正在寻找的是 man st
  • 为什么 RHEL 上的 bash 中 `read -t` 没有超时?

    Why read t在 RHEL5 或 RHEL6 上从管道读取时不会超时 这是我的示例 在从管道读取数据时 我的 RHEL 盒子不会超时 tail f logfile log grep something read t 3 variabl
  • 有没有办法让 Linux CLI IO 重定向持久化?

    我有多个管道命令 如下所示 find options grep options xargs grep options 它们中的每一个都可能产生我不感兴趣的错误 权限错误 文件名空格错误等 因此 我想将所有错误重定向到 dev null 我知
  • Bash shell 读取错误:0:资源暂时不可用

    编写 bash 脚本时 有时你运行的命令会打开另一个程序 例如 npm composer 等 但同时你需要使用read以提示用户 你不可避免地会遇到这种错误 read read error 0 Resource temporarily un
  • bash.sh 运行 cron 的权限被拒绝

    如何在这里使用 bash 脚本运行 cron 我做了如下操作 这里有错误 我想知道如何在 ubuntu 中做到这一点 我现在对它感到震惊 bash sh 文件 bin bash cd var www Controller usr bin p
  • 为 CocoaPods 插件设置 Xcode

    我正在尝试设置终端 Xcode 以便正确工作Xcode CocoaPods 插件 https github com kattrali cocoapods xcode plugin 当我从插件运行集成 cocoapods 选项时 我收到一条消
  • 零垫重命名,例如图片 (2).jpg -> 图片 (002).jpg

    我需要按照标题在所有子文件夹中解释的方式重命名所有图像 我正在考虑用正则表达式提取括号内的数字 然后重命名它 搜索周围我看到有类似的工具rename and mmv但我无法让他们重新命名 jpg 我将不胜感激任何解决我的问题的建议 顺便说一
  • bash 脚本中的未绑定变量

    在调试我的脚本时 我变得绝望 我使用了我的高级同事向我推荐的一些结构 但我不知道如何使其正常工作 bin bash x set ueo pipefail exec gt tmp dq log source BASH SOURCE env p
  • 如何将您的终端与 Android 模拟器连接

    我尝试导航到 android 工具文件夹并输入 adb shell 命令 但它似乎不起作用 我的终端似乎只能识别命令的 adb 部分 并给我一条错误消息 我究竟做错了什么 通过键入列出所有连接的设备adb devices 检查是否列出了任何
  • shell 脚本中数组的最大元素及其索引

    如何在 shell 脚本中从数组中找到最大元素及其索引 我有一个数组 a 2 2116565098 2 1238242060 2 1747941240 2 3201010162 2 3677779871 1 8126464132 2 124
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中

随机推荐

  • 使用 PHP/JQuery 提交表单而不刷新页面

    在广阔的 Web 开发领域中 创建用户友好的体验至关重要 增强用户体验 UX 的一种方法是简化表单提交流程 传统的表单提交需要刷新页面来处理数据 这对于用户来说可能是令人沮丧且耗时的 使用 PHP 和 jQuery 可以克服这个问题并无需刷
  • 如何清除 Docker 容器的日志文件

    本教程将帮助您清除 Docker 容器上的日志文件 如果您的系统磁盘空间不足 并且您发现 docker 容器的日志文件占用了大量磁盘空间 您可以在本教程的帮助下找到日志文件位置并清除它们 清除 docker 容器的日志文件时 不需要停止它
  • 如何使用 DNF 将 Fedora 25 升级到 Fedora 26

    软呢帽26Fedora 的最新版本发布于2017 年 7 月 11 日 Fedora 工作站用户可能需要升级工作站才能使用最新版本 本教程将帮助您将 Fedora 25 升级到 Fedora 26 工作站使用命令行实用程序 DNF 这是升级
  • 如何通过示例将 Nginx 配置为负载均衡器

    Nginx 是一种流行的开源 Web 服务器软件 也可以用作负载均衡器 负载平衡是一种在多个服务器之间分配传入流量的技术 以提高性能 提高可用性并避免任何单个服务器过载 在本文中 我们将通过示例讨论如何将 Nginx 配置为负载均衡器 要将
  • 在 Bash 中计算除法和余数

    Bash 是一种功能强大的命令行界面和脚本语言 提供广泛的数学运算 包括除法和余数 除法和余数是各种编程和数学应用中使用的基本运算 本文将讨论如何在 Bash 中执行除法和求余运算及其用法 在 Bash 中计算除法 除法是一种数学运算 涉及
  • 如何在 Ubuntu 20.04 中使用 PHP 安装 ionCube

    ionCube 加载器是用于在服务器上加载 ionCube 编码文件的库 需要安装在网络服务器上才能在运行之前解码任何 ionCube 编码文件 ionCube 提供了加密 PHP 脚本的功能 以确保它们的安全 它还可以确保它们免受未经授权
  • 如何在 CentOS/RHEL 7/6 和 Fedora 27/26 上安装 NGINX Web 服务器

    NGINX Engine X is an powerful web server Its getting popular very fast due to its fast speed NGINX is also used as a rev
  • 如何在 CentOS、RHEL 和 Fedora 上安装 XCache for PHP

    XCache是一个快速 稳定的 PHP 操作码缓存器 这个相对较新的操作码缓存软件是由 mOo 开发的 XCache 优化性能 将 PHP 脚本的编译状态缓存到 RAM 中 并直接使用 RAM 中的编译版本 这可能会使 php 执行速度比默
  • 如何在 Ubuntu 和 Debian 中创建仅 SFTP 用户

    SFTP SSH 文件传输协议 是一种安全文件协议 用于通过加密的 SSH 传输会话访问 管理和传输文件 这里的SFTP only user是指创建一个仅通过SFTP访问服务器的帐户 该用户没有 SSH shell 访问权限 这允许您通过安
  • 如何在 Ubuntu 和 Debian 上安装 Zsh (Z Shell)

    Zsh 或 Z Shell 是一个强大而灵活的命令行 shell 适用于类 Unix 操作系统 包括 Linux 和 macOS 与默认的 bash shell 相比 它提供了许多功能和改进 包括改进的命令完成 拼写更正和可自定义的提示 在
  • Ubuntu 上 Android SDK/ADT 捆绑包的完整设置指南

    The 安卓软件开发工具包是一个软件开发工具包 提供构建 Android 应用程序所需的 API 库和必要的开发工具 Android SDK是由android开发者官方提供的 本文将帮助您快速配置 ADT Android 开发工具 捆绑包
  • 如何在 Ubuntu 和 Debian 上安装 Ajenti 控制面板

    Ajenti 是一个基于 Web 的控制面板 用于管理系统 如 Webmin cPanel 它有一个非常漂亮且用户友好的界面 对于个人使用 Ajenti 可根据 AGPLv3 免费使用 对于商业用途 您必须定期支付少量费用 本文将帮助您在
  • Swapfile 与 Swap 分区之间的详细比较

    在计算中 尤其是在基于 Linux 的系统中 交换空间在系统的内存管理中起着至关重要的作用 当系统耗尽 RAM 时 它可以使用交换空间作为溢出 将内存 页面 中较少使用或不活动的部分临时存储到硬盘驱动器上 这有助于防止由于内存耗尽而导致系统
  • 如何在 Ubuntu 和 Debian 中安装 Nagios 服务器

    Nagios 是一个开源监控工具 用于监控主机 服务和网络设备 它提供实时监控 警报和报告功能 帮助您主动识别和解决 IT 环境中的问题 在本文中 我们将向您展示如何在 Ubuntu 和 Debian 上安装 Nagios Server 包
  • 如何使用 Lynis 检查 Linux 上的漏洞

    如果我们作为一个系统管理员 Security or 系统审核员 我们的职责包括以下任务 操作系统或应用程序的安全补丁安装 恶意软件扫描 文件完整性检查 安全审核 配置错误检查等 如果有一个能够自动查找这些漏洞的工具 它可以对我们有很大帮助
  • 如何在 Ubuntu 和 Debian 中安装“.deb”文件

    扩展名为 deb 的文件是基于 Debian 的系统的软件包 您可以直接使用 apt 存储库 PPA 安装 Debian 软件包 它还允许通过命令行安装本地下载的 deb 包 Ubuntu 和其他基于 Debian 的系统提供dpkg De
  • 什么是 Apache 重新加载?

    如果您正在管理 Web 服务器 您可能会遇到需要对服务器配置进行一些更改的情况 Apache 是一种广泛使用的 Web 服务器软件 它提供了几种在不中断服务的情况下实施更改的方法 其中一种方法是 重新加载 功能 本文旨在解开并阐明 Apac
  • 什么是高可用性集群:基本介绍

    A 高可用集群是一种计算系统 旨在确保关键服务和应用程序在停机时间最短的情况下仍可供用户使用 它由多个服务器或节点组成 这些服务器或节点被配置为协同工作以提供单个统一的服务或应用程序 如果一个节点发生故障 其他节点将接管以确保服务或应用程序
  • 最大限度地发挥 ChatGPT 在教育领域的潜力

    人工智能 AI 技术具有彻底改变教育的潜力 ChatGPT 是由 AI 开发的语言模型OpenAI 就是这样一种工具 可以用来改变学生的学习方式 ChatGPT 可以为学生提供个性化的学习体验 提供按需支持 并促进与教师和同学的沟通与协作
  • Bash 案例声明

    狂欢case当您有多个不同的选择时 语句通常用于简化复杂的条件 使用case语句而不是嵌套if语句将帮助您使 bash 脚本更具可读性且更易于维护 狂欢case语句与Javascript或C有类似的概念switch陈述 主要区别在于 与 C