linuxshell脚本exit0,Bashexit命令和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。
范例
linux循环执行命令脚本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 ""
exit
仅使⽤exit与exit $?相同,或省略exit。
以下⽰例显⽰了如何由⾮root⽤户调⽤脚本来终⽌脚本:#!/bin/bash
if [[ "$(whoami)" != root ]]; then
echo "Only user root can run this script."
exit 1
fi
echo ""
exit 0
如果您以root⾝份运⾏脚本,则退出代码将为零。 否则,脚本将以状态1退出。
结论
每个shell命令终⽌时都会返回退出代码。 exit命令⽤于退出具有给定状态的外壳。如果您有任何问题或反馈,请随时发表评论。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论