Linux shell编程学习笔记20:case ... esac、continue 和break语句

这篇具有很好参考价值的文章主要介绍了Linux shell编程学习笔记20:case ... esac、continue 和break语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、case ... esac语句说明

在实际编程中,我们有时会请到多条件多分支选择的情况,用if…else语句来嵌套处理不烦琐,于是JavaScript等语言提供了多选择语句switch ... case。与此类似,Linux Shell脚本编程中提供了case...in...esac 语句,来实现多条件多分支选择结构:其语法结构为:
 

case 变量名 in

值1[|值2……])
    命令1
    [...]
    [命令N]
    ;;

 [...]
值a[|值b……])
    命令a
    [...]
    [命令b]
    [break]
    ;;

[*)]

    [命令x]

    [...]
    [命令y]
esac

在每个 case 分支语句中,首先列出该分支对应的值(多个值之间用|分隔)并以半角右圆括号开始,然后列出要执行的语句或命令序列,最后用两个分号 ;; 表示该分支结束。

在把我们想处理的值列出来后,对于其它情况,在C和JavaScript等语言的switch语句中是用default:来表示的,在Matlab等语言的switch语句中是用otherwise来表示,在Linux shell编程中,是用下面的格式来表示的:

*)

case语句以 esac 结束,esac就是case的反序,这与if语句以fi结束相类。

其中的[]的内容是可选的。

二、break语句说明

在很多编程语言中,为了实现在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环而提供了break语句,Linux Shell脚本编程同样提供了break语句。
 

三、实例1(在一重无限循环中)

为了演示case ... esac、和break语句的功能和用法,我们将创建一个演示脚本文件:

while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Contine."
   ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Contine." 
   ;;
   *)  echo "You entered another character:$c \nGame over!"
     break;
   ;;
 esac
done

脚本文件的功能是:

通过while : 语句执行一个无限循环

在循环体中:

首先 用echo -n 命令显示提示信息:"Please enter a nummber or letter: ",其中 -n选项的作用是显示信息后不自动换行。

接着用read命令读取一个字符保存到变量c中

然后用case 语句对变量c保存的用户输入字符进行判断:

  1.    如果是0-9,就输出:You entered a nammber:,以及具体的字符,然后跳到循环体首部继续执行
  2.   如果是a-z,就输出:You entered a lowercase letter: ,具体的字符,及 Continue.,然后跳到循环体首部继续执行
  3.   如果是A-Z,就输出:You entered a capital letter: ,具体的字符,及 Continue.然后跳到循环体首部继续执行
  4.   如果输入的是不属于以上字符范围的其它字符,就输出:You entered another character:$c ",具体的字符,换行输出 Game over!,然后使用break语句跳出循环

下面我们分别在zsh和bash中测试  

(一)在zsh中

1.创建测试脚本a.sh

我们用 echo 和 输出重定向来创建。 

# csdn @ edu in ~ [20:01:21] 
$ echo 'while : ' > a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo ' do' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo ' echo -n "Please enter a nummber or letter: "' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo ' read c' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo ' case $c in ' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." ' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   *)  echo "You entered another character:$c \\nGame over!"' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '     break;' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo ' esac' >> a.sh

# csdn @ edu in ~ [20:01:52] 
$ echo 'done' >> a.sh

# csdn @ edu in ~ [20:01:52] 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

2. 用cat命令查看创建的测试脚本a.sh内容

# csdn @ edu in ~ [20:05:43] 
$ cat a.sh
while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."
   ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." 
   ;;
   *)  echo "You entered another character:$c \nGame over!"
     break;
   ;;
 esac
done

# csdn @ edu in ~ [20:05:47] 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

3.执行测试脚本a.sh

# csdn @ edu in ~ [20:05:47] 
$ . ./a.sh
Please enter a nummber or letter: 3
You entered a nammber:3
Please enter a nummber or letter: 9
You entered a nammber:9
Please enter a nummber or letter: A 
You entered a capital letter:A. Continue.
Please enter a nummber or letter: x
You entered a lowercase letter: x. Continue.
Please enter a nummber or letter: b
You entered a lowercase letter: b. Continue.
Please enter a nummber or letter: Z
You entered a capital letter:Z. Continue.
Please enter a nummber or letter: D
You entered a capital letter:D. Continue.
Please enter a nummber or letter: *
You entered another character:* 
Game over!

# csdn @ edu in ~ [20:07:07] 
$  

 Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

我们依次输入字符3、9、A、x、b、z、D和*,当输入的字符是数字或字母时,循环继续,直到我们输入*,才跳出循环。

(二)在bash中

1.创建测试脚本a.sh

# csdn @ edu in ~ [20:07:07] 
$ exec bash
[csdn ~]$ echo 'while : ' > a.sh
[csdn ~]$ echo ' do' >> a.sh
[csdn ~]$ echo ' echo -n "Please enter a nummber or letter: "' >> a.sh
[csdn ~]$ echo ' read c' >> a.sh
[csdn ~]$ echo ' case $c in ' >> a.sh
[csdn ~]$ echo '   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo '   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo '  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." ' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo '   *)  echo "You entered another character:$c \\nGame over!"' >> a.sh
[csdn ~]$ echo '     break;' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo ' esac' >> a.sh
[csdn ~]$ echo 'done' >> a.sh

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

2. 用cat命令查看创建的测试脚本a.sh内容

[csdn ~]$ cat a.sh
while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."
   ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." 
   ;;
   *)  echo "You entered another character:$c \\nGame over!"
     break;
   ;;
 esac
done
[csdn ~]$ 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

3.执行测试脚本a.sh

[csdn ~]$ . a.sh
Please enter a nummber or letter: 4
You entered a nammber:4
Please enter a nummber or letter: A
You entered a capital letter:A. Continue.
Please enter a nummber or letter: d
You entered a lowercase letter: d. Continue.
Please enter a nummber or letter: D
You entered a capital letter:D. Continue.
Please enter a nummber or letter: /
You entered another character:/ \nGame over!
[csdn ~]$ 

 Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

 我们依次输入字符4、A、d、D和/,当输入的字符是数字或字母时,循环继续,直到我们输入/,才跳出循环。

(三)小结

通过上面的实例,可以看到:

1.zsh和bash对case ... esac和break语句都提供了支持。

2.;zsh和bash对字符串"\\n"的处理是不同的。如:

echo '   *)  echo "You entered another character:$c \\nGame over!"' >> a.sh

在zsh中生成的语句是:

 *)  echo "You entered another character:$c \nGame over!"

在bash中生成的语句是:

*)  echo "You entered another character:$c \\nGame over!"

这也导致zsh和bas在显示该行信息时存在一点差异。 

四、实例2(在双重无限循环中)

为了测试不同的shell中对break语句功能的支持程度是否存在不同。

我们在实例1的外面再加上一个while : 无限循环,看看用break语句能跳出几重循环。 

 (一)在zsh中

1.创建测试脚本a.sh

# csdn @ edu in ~ [19:00:42] 
$ echo 'while : ' > a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo 'do' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo 'while : ' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo ' do' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo ' echo -n "Please enter a nummber or letter: "' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo ' read c' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo ' case $c in ' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." ' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   *)  echo "You entered another character:$c \\nGame over!"' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '     break;' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo '   ;;' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo ' esac' >> a.sh

# csdn @ edu in ~ [19:01:08] 
$ echo 'done' >> a.sh

# csdn @ edu in ~ [19:01:08] 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

2. 用cat命令查看创建的测试脚本a.sh内容

# csdn @ edu in ~ [19:02:56] 
$ cat a.sh
while : 
do
while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."
   ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." 
   ;;
   *)  echo "You entered another character:$c \nGame over!"
     break;
   ;;
 esac
done
done

# csdn @ edu in ~ [19:03:56] 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

3.执行测试脚本a.sh

# csdn @ edu in ~ [19:04:41] C:127
$ . ./a.sh
Please enter a nummber or letter: 3
You entered a nammber:3
Please enter a nummber or letter: 9
You entered a nammber:9
Please enter a nummber or letter: d
You entered a lowercase letter: d. Continue.
Please enter a nummber or letter: X
You entered a capital letter:X. Continue.
Please enter a nummber or letter: Y
You entered a capital letter:Y. Continue.
Please enter a nummber or letter: *
You entered another character:* 
Game over!
Please enter a nummber or letter: ^C%                                                                                                                                                            

# csdn @ edu in ~ [19:06:06] C:126

 Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

 (二)在bash中

1.创建脚本文件a.sh

[csdn ~]$ echo 'while : ' > a.sh
[csdn ~]$ echo 'do' >> a.sh
[csdn ~]$ echo 'while : ' >> a.sh
[csdn ~]$ echo ' do' >> a.sh
[csdn ~]$ echo ' echo -n "Please enter a nummber or letter: "' >> a.sh
[csdn ~]$ echo ' read c' >> a.sh
[csdn ~]$ echo ' case $c in ' >> a.sh
[csdn ~]$ echo '   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo '   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo '  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." ' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo '   *)  echo "You entered another character:$c \\nGame over!"' >> a.sh
[csdn ~]$ echo '     break;' >> a.sh
[csdn ~]$ echo '   ;;' >> a.sh
[csdn ~]$ echo ' esac' >> a.sh
[csdn ~]$ echo 'done' >> a.sh
[csdn ~]$ echo 'done' >> a.sh

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

2.用cat命令查看创建的测试脚本文件a.sh的内容

[csdn ~]$ cat a.sh
while : 
do
while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."
   ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." 
   ;;
   *)  echo "You entered another character:$c \\nGame over!"
     break;
   ;;
 esac
done
done

[csdn ~]$ 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

 3.执行测试脚本a.sh

[csdn ~]$ . a.sh
Please enter a nummber or letter: 6
You entered a nammber:6
Please enter a nummber or letter: a
You entered a lowercase letter: a. Continue.
Please enter a nummber or letter: B
You entered a capital letter:B. Continue.
Please enter a nummber or letter: *
You entered another character:* \nGame over!
Please enter a nummber or letter: -
You entered another character:- \nGame over!
Please enter a nummber or letter: ^C
[csdn ~]$ 

(三)小结

从上面的测试结果来看,无论是在zsh中,还是在bash中,break都只能跳出一层循环。

所以在上面的例子中,我们使用^C来终止脚本执行。

五、continue语句

linux shell 脚本 编程中的continue语句的作用,跟C、JavaScript等其它编程语言一样,就是跳转,重新开始循环。

六、实例三

为了验证continue语句的作用,我对实例1中最后一个case分支的代码:

   *)  echo "You entered another character:$c \nGame over!"
     break;
   ;;

改为:

   *)  echo "You entered another character:$c"
   continue
   echo "Game over!"
   break;
   ;;

即:

while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Contine."
   ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Contine." 
   ;;
   *)  echo "You entered another character:$c"
   continue
   echo "Game over!"
   break;
   ;;
 esac
done

这样,当我们输入一个非数字或字母字符时,看看会代码执行结果发生什么样的变化? 

(一)在zsh中

1.创建测试脚本文件a.sh 

echo 'while : ' > a.sh
echo ' do' >> a.sh
echo ' echo -n "Please enter a nummber or letter: "' >> a.sh
echo ' read c' >> a.sh
echo ' case $c in ' >> a.sh
echo '   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"' >> a.sh
echo '   ;;' >> a.sh
echo '   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."' >> a.sh
echo '   ;;' >> a.sh
echo '  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." ' >> a.sh
echo '   ;;' >> a.sh
echo '   *)  echo "You entered another character:$c"' >> a.sh
echo '   continue' >> a.sh
echo '   echo "Game over!"' >> a.sh
echo '   break;' >> a.sh
echo '   ;;' >> a.sh
echo ' esac' >> a.sh
echo 'done' >> a.sh

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

2.查看生成的脚本文件a.sh

# csdn @ edu in ~ [21:18:17] C:126
$ cat a.sh
while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
   0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
   ;;
   a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."
   ;;
   A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." 
   ;;
   *) echo "You entered another character:$c"
   continue
   echo "Game over!"
   break;
   ;;
 esac
done

# csdn @ edu in ~ [21:19:29] 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

3.运行脚本文件a.sh

# csdn @ edu in ~ [21:16:42] 
$ . ./a.sh
Please enter a nummber or letter: b
You entered a lowercase letter: b. Continue.
Please enter a nummber or letter: 1
You entered a nammber:1
Please enter a nummber or letter: c
You entered a lowercase letter: c. Continue.
Please enter a nummber or letter: *
You entered another character:*
Please enter a nummber or letter: ^C%                                                                                                                                                                                                  

# csdn @ edu in ~ [21:18:17] C:126

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

(二)在bash中

1.创建测试脚本文件a.sh 

 # csdn @ edu in ~ [23:25:46] 
$ exec bash[csdn ~]$ echo 'while : ' > a.sh
[csdn ~]$ echo ' do' >> a.sh
[csdn ~]$ echo ' echo -n "Please enter a nummber or letter: "' >> a.sh
[csdn ~]$ echo ' read c' >> a.sh
[csdn ~]$ echo ' case $c in ' >> a.sh
[csdn ~]$ echo '  0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"' >> a.sh
[csdn ~]$ echo '  ;;' >> a.sh
[csdn ~]$ echo '  a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."' >> a.sh
[csdn ~]$ echo '  ;;' >> a.sh
[csdn ~]$ echo '  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." ' >> a.sh
[csdn ~]$ echo '  ;;' >> a.sh
[csdn ~]$ echo '  *)  echo "You entered another character:$c"' >> a.sh
[csdn ~]$ echo '  continue' >> a.sh
[csdn ~]$ echo '  echo "Game over!"' >> a.sh
[csdn ~]$ echo '  break;' >> a.sh
[csdn ~]$ echo '  ;;' >> a.sh
[csdn ~]$ echo '  esac' >> a.sh
[csdn ~]$ echo 'done' >> a.sh

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

2.用cat命令查看脚本文件的内容

[csdn ~]$ cat a.sh
while : 
 do
 echo -n "Please enter a nummber or letter: "
 read c
 case $c in 
  0|1|2|3|4|5|6|7|8|9) echo "You entered a nammber:$c"
  ;;
  a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z) echo "You entered a lowercase letter: $c. Continue."
  ;;
  A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z) echo "You entered a capital letter:$c. Continue." 
  ;;
  *)  echo "You entered another character:$c"
  continue
  echo "Game over!"
  break;
  ;;
  esac
done
[csdn ~]$ 

 Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

3.执行脚本文件

[csdn ~]$ . a.sh
Please enter a nummber or letter: 3
You entered a nammber:3
Please enter a nummber or letter: a
You entered a lowercase letter: a. Continue.
Please enter a nummber or letter: C
You entered a capital letter:C. Continue.
Please enter a nummber or letter: *
bash:  echo: command not found
Please enter a nummber or letter: ^C
[csdn ~]$ 

Linux shell编程学习笔记20:case ... esac、continue 和break语句,Linux世界,麒麟操作系统,系统安全,linux,脚本编程,shell编程,case语句,break语句,continue语句,学习笔记

 3.小结

在上面的实例中,当我们输入字符*时,程序执行代码:

*) echo "You entered another character:$c"

输出信息:

You entered another character:*

后,就遇到 了continue语句,重新开始循环。

continue语句后面的代码:

   echo "Game over!"
   break;

没有执行。

所以我们还是要用Ctrl+C来终止脚本的运行。文章来源地址https://www.toymoban.com/news/detail-743493.html

到了这里,关于Linux shell编程学习笔记20:case ... esac、continue 和break语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux shell编程学习笔记25:tty

    在 1830 年代和 1840 年代,开发了称为电传打字机(teletypewriters)的机器,这些机器可以将发件人在键盘上输入的消息“沿着线路”发送在接收端并打印在纸上。 电传打字机的名称由teletypewriters, 缩短为teletypes,并最终缩短为 TTY。 电传打字机:teletypewriters →  teletypes → t

    2024年02月05日
    浏览(54)
  • Linux shell编程学习笔记35:seq

    在使用 for 循环语句时,我们经常使用到序列。比如: for i in 1 2 3 4 5 6 7 8 9 10; do echo \\\"$i * 2 = $(expr $i * 2)\\\";  done 其中的 1 2 3 4 5 6 7 8 9 10; 就是一个整数序列 。 为了方便我们使用数字序列,Linux提供了seq命令,这个命令是取自单词 sequence 的前3个字母。比如: for i in $(seq 1 10) ;

    2024年02月04日
    浏览(44)
  • Linux shell编程学习笔记29:shell自带的 脚本调试 选项

    Linux shell脚本的调试方法比较多,上次我们探讨和测试了shell内建命令set所提供的一些调试选项,其实 shell 本身也提供了一些调试选项。我们以bash为例来看看。 purleEndurer @ csdn ~ $ bash --help GNU bash, version 4.2.46(2)-release-(x86_64-redhat-linux-gnu) Usage:  bash [GNU long option] [option] ...      

    2024年02月04日
    浏览(55)
  • Linux shell编程学习笔记41:lsblk命令

    边缘计算面临着数据安全与隐私保护、网络稳定性等挑战,但同时也带来了更强的实时性和本地处理能力,为企业降低了成本和压力,提高了数据处理效率。因此,边缘计算既带来了挑战也带来了机遇,需要我们不断地研究 前几节学习我们均涉及到磁盘和文件存储,今天我们

    2024年01月24日
    浏览(49)
  • Linux shell编程学习笔记36:read命令

     *更新日志  *2023-12-18 1.根据[美] 威廉·肖特斯 (Willian shotts)所著《Linux命令行大全(第2版)》                         更新了-e、-i、-r选项的说明                       2.更新了 2.8 的实例,增加了gif动图                       3.补充了-i的应用实例 2.12 目录 目录

    2024年02月04日
    浏览(45)
  • Linux shell编程学习笔记39:df命令

    0 前言 1  df命令的功能、格式和选项说明 1.1 df命令的功能 1.2 df命令的格式 1.3 df命令选项说明  2 df命令使用实例  2.1  df:显示主要文件系统信息 2.2 df -a:显示所有文件系统信息 2.3 df -t[=]TYPE或--type[=]TYPE:显示TYPE指定类型的文件系统信息 2.4 df --total:追加显示统计信息 2

    2024年01月16日
    浏览(59)
  • Linux shell编程学习笔记47:lsof命令

    今天国产电脑提示磁盘空间已耗尽,使用用df命令检查文件系统情况,发现/dev/sda2已使用100%。 Linux shell编程学习笔记39:df命令 https://blog.csdn.net/Purpleendurer/article/details/135577571 于是开始清理磁盘空间。 第一步是查看已删除、但空间却没有释放的进程。 这里要用到 lsof命令。

    2024年04月27日
    浏览(43)
  • Linux shell编程学习笔记33:type 命令

     目录 0 引言 1 type 命令的功能和格式 1.1 type命令的功能 1.2 type 命令的格式 2 type命令用法实例 2.1用type命令查看shell内置命令(以echo命令为例) 2.2 用type命令查看别名(以ls命令为例) 2.3 用type命令同时查看shell内置命令和别名(以echo和ls命令为例) 2.4 用type命令查看外部

    2024年02月03日
    浏览(52)
  • Linux shell编程学习笔记40:stat命令

    “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!” 目录 0 前言 1 DOS、Wind

    2024年01月19日
    浏览(55)
  • Linux shell编程学习笔记18:while循环语句

    上回我们研究和探讨了Linux shell编程中for 循环语句,与在C/C++中一样,for 循环语句Linux shell编程中有很多灵活的用法。今天我们来研究和探讨while循环语句。 我们继续以for循环语句中的例子,计算 从1到10与2的乘积 并输出。 1.在zsh命令行中 # csdn @ edu in ~ [20:35:57]  $ i=1; while

    2024年02月06日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包