shell语法之case

case的语法格式如下:
       case var in
            exp-1) 命令体1 ;;
            exp-2) 命令体2 ;;
                  ...
            *)    命令体 ;;
shell通过计算变量var的值,将其结果依次和运算式exp-1, exp-2等进行比较,直到找到一个匹配的运算式为止。如果找到了匹配项,则执行它下面的命令直到遇到一对分号(;;)为止。  

平时较小用case语句,偶尔用到,所以记录如下:
1> var可以是数字,也可以是字符串,只是在下面的判断运算式exp里区分就行
2> 判断运算式exp可以只是一个数字,或一字符串,也可以是一个运算式如$((a+b)) 其中a,b在上面已赋值,也可以是一个正则表达式
3> *即为当上面的判断运算式都匹配失败时才会执行它的命令体, 该项为可选
4> 一对分号可以跟在命令体最后一语句后,也可以写在命令体结束后的下一空行.作用相同

一段程序如下:
param=$1
a=11
b=12
echo "paramA="$param
case $param in
$((a+b))) echo "NO1"
                param="dog"   ;;
hello)      echo "NO2"
               param="cat";;
10)          echo "NO3"
               param="pig";;
*)            echo "ERROR"
esac
echo "paramB="$param
接下来执行这段程序时,我可以分别带参数10 或 23 或 "hello" 看看结果打印的param的不同. 同时可以把
case......esac 这一段代码放在()中, 再分别执行后观察param的打印情况.在执行()中的代码时shell会创建一新的子进程,所以在子进程中的对param的修改并不会影响到父进程中的变量的值.

http://blog.csdn.net/edei2004/article/details/3693979

时间: 2024-10-10 04:02:01

shell语法之case的相关文章

shell语法使用

这两天初次接触shell编程,所谓shell编程其实就是用一定的语法将各种基本的命令组合起来,让shell程序去解释执行.如果对 windows的dos有了解,可以这样理解,其实shell脚本文件和.bat批处理文件差不多,不过linux下的shell比起windows的 dos强大很多. shell有很多种,如bash.sh .tcsh. ksh等,linux系统里面默认使用的是bash. 下面看一下学习shell的第一个程序: 输入命令vi my_01.sh,创建一个my_01.sh文件并用

shell脚本中case条件控制语句的一个bug分析_linux shell

在shell脚本中,发现case语句的一个问题.就是指定小写字母[a-z]和大写字母[A-Z]的这种方法不管用了. 出现如下情况: 复制代码 代码如下: [root@station1 ~]# cat case.sh#!/bin/bashwhile :doecho -n "input a letter: "read varcase "$var" in  [a-z]) echo "Lowercase letter";;  [A-Z]) echo &q

Linux下shell中case命令详解

  linux下shell中的case名字和C/C++中的switch类似,但是shell中的case更强大和复杂. 1.强大主要体现在:shell中case中的关键字可以是字符串类型,而每一项中可以包含正则表达式. 2.复杂主要体现在:shell中case的每一个项后有三个选择:break(常规的break).unconditional follow up(无条件继续)和conditional follow up(有条件继续). 这篇文章的重点是上面的第2点. case的无条件继续和有条件继续

Shell case 正则匹配法

read -p "Do you want to continue [Y/n]?" BOOLEAN http://netkiller.github.io/shell/index.html case $BOOLEAN in [yY][eE][sS]) echo 'Thanks' $BOOLEAN ;; [yY]|[nN]) echo 'Thanks' $BOOLEAN ;; 'T'|'F') echo 'Thanks' $BOOLEAN ;; [Tt]ure|[Ff]alse) echo

shell中case的用法学习笔记_linux shell

shell中的case语句: 可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码. 使用格式:case 匹配母板 in模板1 [ | 模板2 ] - ) 语句组 ;;模板3 [ | 模板4 ] - ) 语句组 ;;esaccase语句的匹配是从上往下地匹配顺序.因此,case语句编写的原则是从上往下,模板从特殊到普通.在C语言里,case语句中有default模板,而在shell程序设计中,可能将模板写成*,就可以完成相同的功能. 例1: 复制代码 代码如下: #!

case,while,for shell脚本中经常可以看到read -p “ 提示符” 不接变量

问题描述 case,while,for shell脚本中经常可以看到read -p " 提示符" 不接变量 如题:一般是这样用的read -p "Please press enter to continue";换echo 出错 case,while,for, 循环中,read -p "提示符" 不接变量时,他与echo区别在于,他的输入赋值给REPLY,echo只是输出到终端,这样做有什么意义呢?换句话REPLY能起什么作用? 解决方案 已经解决

shell脚本编程之case语句学习笔记_linux shell

case语句是用来实现多个if..else的功能的,但是用法上有些不同,学过其他语言的人都知道,case中要对变量进行匹配,如果有一个匹配成功的话就执行相应的语句.shell编程中的case语句也是这个意思,case会对字符串进行匹配,是从第一个模式开始的,如果有一个模式已经匹配成功的话,其他的模式就不会再进行匹配了,下面看下代码中的用法吧. #!/bin/sh echo "please yes or no" read input #case语句的基本用法,记住每一个匹配后边都有双分号

sql 日期函数getdate()和case语法

日期函数 定义和用法 GETDATE() 函数从 SQL Server 返回当前的时间和日期. 语法 GETDATE()实例 例子 1 使用下面的 SELECT 语句: SELECT GETDATE() AS CurrentDateTime结果: CurrentDateTime 2008-12-29 16:25:46.635 注释:上面的时间部分精确到毫秒. 例子 2 下面的 SQL 创建带有日期时间列 (OrderDate) 的 "Orders" 表: CREATE TABLE Or

shell脚本 文件A 空格 文件B 是什么意思?

问题描述 shell脚本 文件A 空格 文件B 是什么意思? 一个shell脚本 case in A dir/user/fileA dir/user/fileB;; 请问这句话是什么意思? 解决方案 如果是在A中,寻找或获取文件dir/user/fileA和dir/user/fileB 解决方案二: case的语法是 case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac 如果这里的pattern是A的话(缺少右括号),