糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > linux shell脚本退出 Bash退出命令和退出代码

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

时间:2019-01-08 09:10:34

相关推荐

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

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

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

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

退出状态

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

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

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

date &> /dev/null

echo $?

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

0

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

ls /nonexisting_dir &> /dev/null

echo $?

2

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

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

sudo tcpdump -n -l | tee file.out

echo $?

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

重击exit命令

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

exit N

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

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

例子

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

if grep -q "search-string" filename then

echo "String found."

else

echo "String not found."

fi

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

cd /opt/code && mkdir project

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

#!/bin/bash

echo "doing stuff..."

exit

使用justexit与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用户身份运行脚本,则退出代码将为零。否则,脚本将以status退出1。

结论

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

如果觉得《linux shell脚本退出 Bash退出命令和退出代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。