云网牛站
所在位置:首页 > Linux命令 > Linux中的Exit状态、Bash Exit命令和Exit代码示例

Linux中的Exit状态、Bash Exit命令和Exit代码示例

2020-06-09 09:55:30作者:庄立稿源:云网牛站

通常,在编写Bash脚本时,您需要在满足特定条件时终止脚本,或者根据命令的exit代码采取措施。在本文中,我们将介绍Bash exit内置命令和已执行命令的exit状态。

Linux中的Exit状态、Bash Exit命令和Exit代码示例

 

Exit状态

每个shell命令在成功终止时都会返回Exit代码。

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

特殊变量$?返回最后执行的命令的Exit状态:

date &> /dev/null

echo $?

参考:echo命令_Linux echo命令使用详解:输出指定的字符串或者变量

date命令成功完成,并且Exit代码为零:

0

如果尝试在不存在的目录上运行ls,则Exit代码将为非零:

ls /nonexisting_dir &> /dev/null

echo $?

返回:

2

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

当执行多命令管道时,管道的Exit状态为最后一条命令的Exit状态:

sudo tcpdump -n -l | tee file.out

echo $?

在上面的示例中,echo $?将打印tee命令的Exit代码。

 

Bash exit命令

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

exit N

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

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

 

示例

命令的exit状态可用于条件命令(例如if)中,在以下示例中,如果在文件名中找到“search-string”,则grep将以零退出(这在shell脚本中为true):

if grep -q "search-string" filename then

 echo "String found."

else

 echo "String not found."

fi

运行由&& (AND)或|| (OR)分隔的命令列表时,命令的exit状态确定是否将执行列表中的下一个命令,在这里,仅当cd返回零时,才会执行mkdir命令:

cd /opt/code && mkdir project

如果脚本以exit结束而未指定参数,则脚本exit代码是脚本中最后执行的命令的代码,~/script.sh:

#!/bin/bash

echo "doing stuff..."

exit

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

这是显示非脚本用户调用脚本时如何终止脚本的示例:

#!/bin/bash

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

 echo "Only user root can run this script."

 exit 1

fi

echo "doing stuff..."

exit 0

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

 

结论

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

 

相关主题

exit命令_Linux exit命令使用详解:退出当前的shell

Linux命令子频道
精选文章
热门文章