linux脚本 case,shell脚本(四)case流程控制和exit命令

exit命令

exit用来控制程序和表达式的流程,一般的编程语言中都会有一个exit函数,在Linuxshell中也属存在的.

exit 0

exit status

status用0-255之间的数字表示,返回状态值的同时伴随着脚本的退出(其实就是退出).

就是$? 的值可以使用echo 进行查询

exit命令 在脚本中和在终端上是不一样的.

实验1-判断从键盘输入的值是否为空

1,进入一个子shell,编辑一个文件.(预防执行exit的时候退出终端,所以先执行一个子shell)

[root@Cent65 ~]# bash

[root@Cent65 ~]# vim exit.sh

#!/bin/bash

echo "please enter a string :"

read str1

if [ -z $str1 ]

then

echo "what you enter is null"

exit 1

fi

验证脚本

我们先输入一个值,可以看到我的退出状态为0 (脚本的变量值输入不为空),不会执行then中的语句

输入一个空的字符串 则执行then后面的命令 同时退出 状态为1

84ec3b4fdcb15b1544a0c6da17855f51.png

继续验证:

将exit.sh脚本中的值改成255

daa3c734e619a198a560b20d3034b28a.png

68141fd193ab49892d6b574f19c47dda.png

在编写脚本时可以自己设置退出的状态值,不过特定的值都是有特定的意义的,不要乱用.

case语句结构

case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case语句主要适用于,某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列

case分支语句的语法结构

case变量名 in

模式1)

命令序列

模式二)

命令序列

;;

……

*)

默认命令序列

exit

esac

注意事项:

取值后面必须为单词   in;

每一模式必须以右括号结束。

取值可以为变量或常数。

这个esac 就是case的结束,像if...fi 一样的,

注意commands  ;; 中的“;;”不能少掉。

匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。

如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

9286778f0df7b49824fb68a9b7c4acf1.png

实验

编写一个名为untar.sh的脚本,用来解压.tar.gz 和 .tar.bz2格式的归档文件

vim untar.sh

case $1 in

*.tar.gz)

tar zxf $1

;;

*.tar.bz2)

tar jxf $1

;;

*)

echo "error"

;;

esac

测试:

创建一个测试的.tar.gz文件

b1dba7ec46e8c9f7d063ec74a660a602.png

bb0d6f48fcbab2f9e6d43f458b6c39cd.png

73f4a36c99673c4798036a45ddf60930.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值