shell里的exit 2是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell里的exit 2是啥意思?相关的知识,希望对你有一定的参考价值。
exit 表示这个程序退出,结束了exit 2 表示这个程序退出后,它的返回值是2。
可以理解为这个程序死了,它的遗言是2,告诉别人自己是因为什么原因死掉的。这样法医(shell或它的父进程)就可以知道原因,来判断凶手(程序出错)是谁,从而作进一步的处理。 参考技术A 它类似C函数的机制,我们知道大多数的C函数是有返回值的(void型的除外),而其他函数可以通过这个函数的返回值判断此函数的执行状态,是失败了还是成功了。同理,当一个shell脚本中的语句调用了另一个shell脚本,也可以判断被调用的shell脚本的退出状态,所以exit 2表示此shell脚本的退出值为2,可以用来被调用它的脚本检查返回值。
shell脚本case流程控制和exit命令
exit命令
exit用来控制程序和表达式的流程,一般的编程语言中都会有一个exit函数,在Linuxshell中也属存在的.
exit 0
exit status
status 用0-255之间的数字表示,返回状态值的同时伴随着脚本的退出(其实就是退出).
就是$? 的值可以使用echo 进行查询
exit命令 在脚本中和在终端上是不一样的.
实验1-判断从键盘输入的值是否为空
1,进入一个子shell,编辑一个文件.(预防执行exit的时候退出终端,所以先执行一个子shell)
[[email protected] ~]# bash
[[email protected] ~]# 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
继续验证:
将exit.sh脚本中的值改成255
在编写脚本时可以自己设置退出的状态值,不过特定的值都是有特定的意义的,不要乱用.
case语句结构
case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
case语句主要适用于,某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列
case分支语句的语法结构
case 变量名 in
???????? 模式1)
???????????????????? 命令序列
????????? 模式二)
???????????????????? 命令序列
;;
????????????? ……
???????????????? *)
?????????????????? 默认命令序列
exit
esac
注意事项:
取值后面必须为单词?? in;
每一模式必须以右括号结束。
取值可以为变量或常数。
这个esac 就是case的结束,像if...fi 一样的,
注意commands? ;; 中的“;;”不能少掉。
匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。
如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
实验
编写一个名为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文件
以上是关于shell里的exit 2是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章