linux shell脚本 exit0,Bash exit命令和exit退出代码

通常,在编写Bash脚本时,需要在满足特定条件时终止脚本,或者根据命令的退出代码采取措施。

在本文中,我们将介绍Bash exit内置命令和已执行命令的退出状态。

退出状态

每个shell命令成功终止或失败均返回退出代码。

按照惯例,退出代码为零表示命令成功完成,而非零表示遇到错误。

特殊变量$?返回最后执行的命令的退出状态:date &> /dev/null

date命令成功完成,并且退出代码为零:0

如果您尝试在不存在的目录上运行ls,则退出代码将为非零值:ls /nonexisting_dir &> /dev/null2

状态码可用于找出命令失败的原因。 每个命令的手册页都包含有关退出代码的信息。

执行多命令管道时,管道的退出状态为最后一条命令的退出状态:sudo tcpdump -n -l | tee file.out

在上述示例中,echo $?将显示tee命令的退出代码。

Bashexit命令

exit命令以状态N退出shell。 它具有以下语法:exit N

如果未给出N,则退出状态代码为最后执行的命令的代码。

在shell脚本中使用时,作为exit命令的参数提供的值将作为退出代码返回给shell。

范例

exit命令的退出状态可用于条件命令,例如。 在下面的示例中,如果在filename中找到“搜索字符串”,则grep将以零退出(这在shell脚本中表示为true):if grep -q "search-string" filename then

echo "String found."

else

echo "String not found."

fi

运行以&&(与)或||(或)分隔的命令列表时,命令的退出状态确定是否将执行列表中的下一个命令。 在此,仅当cd返回零时,才会执行mkdir命令:cd /opt/code && mkdir project

如果脚本以exit结尾但未指定参数,则脚本退出代码是脚本中最后执行的命令的退出代码。

〜/script.sh#!/bin/bash

echo "doing stuff..."

exit

仅使用exit与exit $?相同,或省略exit。

以下示例显示了如何由非root用户调用脚本来终止脚本:#!/bin/bash

if [[ "$(whoami)" != root ]]; then

echo "Only user root can run this script."

exit 1

fi

echo "doing stuff..."

exit 0

如果您以root身份运行脚本,则退出代码将为零。 否则,脚本将以状态1退出。

结论

每个shell命令终止时都会返回退出代码。 exit命令用于退出具有给定状态的外壳。

如果您有任何问题或反馈,请随时发表评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值