linux exit函数返回值,linux程式设计-11.shellscript(bash)–(8)返回状态exit_shell教程

在继续下去之前,我们必须要切入另一个话题,即返回状态值-ExitStatus。因为if/while/until都迁涉到了使用ExitStatus来控制程式流程的问题。

——————————————————————————–

许多人都知道,在许多语言中(C/C /Perl….),都有一个exit的函数,甚至连Bash自己都有个exit的内建命令。而exit後面所带的数字,便是返回状态值-ExitStatus。

返回状态值可以使得程式与程式之间,利用Shellscript来结合的可能性大增,利用小程式,透过Shellscript,来完成很杂的工作。

在shell中,返回值为零表示成功(True),非零值为失败(False)。

——————————————————————————–

举例来说,以下这个两个小程式yes/no分别会返回0/1(成功/失败):

/*yes.c*/

voidmain(void){exit(0);}

/*no.c*/

voidmain(void){exit(1);}

那麽以下这个”YES”的shellscript便会显示”YES”。

#!/bin/sh

#YES

ifyes;then

echo”YES”

fi

而”NO”不会显示任何东西。

#!/bin/sh

#NO

ifno;then

echo”YES”

fi

——————————————————————————–

testexpress

[express]

在Shellscript中,testexpress/[express]这个语法被大量地使用,它是个非常实用的指令。由於它的返回值即ExitStatus,经常被运用在if/while/until的场合中。而在後面,我们也会大量运用到,在进入介绍if/while/until之前,有必要先解一下。

其返回值为0(True)或1(False),要看表述(express)的结果为何。

express格式

-bfile:当档案存在并且属性是Blockspecial(通常是/dev/xxx)时,返回True。

-cfile:当档案存在并且属性是characterspecial(通常是/dev/xxx)时,返回True。

-dfile:当档案存在并且属性是目录时,返回True。

-efile:当档案存在时,返回True。

-ffile:当档案存在并且是正常档案时,返回True。

-gfile:当档案存在并且是set-group-id时,返回True。

-kfile:当档案存在并且有”sticky”bit被设定时,返回True。

-Lfile:当档案存在并且是symboliclink时,返回True。

-pfile:当档案存在并且是namepipe时,返回True。

-rfile:当档案存在并且可读取时,返回True。

-sfile:当档案存在并且档案大小大於零时,返回True。

-Sfile:当档案存在并且是socket时,返回True。

-tfd:当fd被开启为terminal时,返回True。

-ufile:当档案存在并且set-user-idbit被设定时,返回True。

-wfile:当档案存在并且可写入时,返回True。

-xfile:当档案存在并且可执行时,返回True。

-Ofile:当档案存在并且是被执行的userid所拥有时,返回True。

-Gfile:当档案存在并且是被执行的groupid所拥有时,返回True。

file1-ntfile2:当file1比file2新时(根据修改时间),返回True。

file1-otfile2:当file1比file2旧时(根据修改时间),返回True。

file1-effile2:当file1与file2有相同的device及inodenumber时,返回True。

-zstring:当string的长度为零时,返回True。

-nstring:当string的长度不为零时,返回True。

string1=string2:string1与string2相等时,返回True。

string1!=string2:string1与string2不相等时,返回True。

!express:express为False时,返回True。

expr1-aexpr2:expr1及expr2为True。

expr1-oexpr2:expr1或expr2其中之一为True。

arg1OParg2:OP是-eq[equal]、-ne[not-equal]、-lt[less-than]、-le[less-than-or-equal]、-gt[greater-than]、-ge[greater-than-or-equal]的其中之一。

——————————————————————————–

在Bash中,当错误发生在致命信号时,bash会返回128 signalnumber做为返回值。如果找不到命令,将会返回127。如果命令找到了,但该命令是不可执行的,将返回126。除此以外,Bash本身会返回最後一个指令的返回值。若是执行中发生错误,将会返回一个非零的值。

FatalSignal:128 signo

Cantnotfindcommand:127

Cantnotexecute:126

Shellscriptsuccessfullyexecuted:returnthelastcommandexitstatus

Fatalduringexecution:returnnon-zero

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值