一、shell脚本
1、判断返回值
chmod a+x test.sh
if [ $? -eq 0 ];then
echo success
else
echo fail
fi
shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败。 -eq是等于
二、powershell脚本
1、判断返回值
if($?){
echo success
}else{
echo fail
}
powershell跟shell使用同样的判断,但是powershell是通过 $true $false 的布尔值来判断的,成功是true,失败是false,所以不需要跟0 1做比较。可直接引用
三、bat脚本
1、单语句判断后跳转下一句
net user admin /add && (goto succeed) || echo failed
PS:语句分三部分,第一句是执行一个命令语句,如果执行通过,也就是返回的是0,没有报错,则执行&&后面的语句,否则执行||后面的语句。 && 表示成功,|| 表示失败,后面的语句可以加括号,也可以不加。
2、通过%errorlevel%判断
net user admin /add
if %errorlevel% == 0 (
echo success
) else (
echo fail
)
PS: %errorlevel%判断上一个语句执行的返回值,其中0是成功,1是失败。实际上,errorlevel 返回值可以在0~255 之间,除了0,其他每个数值都有特殊的含义。 额外提醒,在for循环中或if语句中多条命令都需要获取返回值等情况下,用errorlevel显得无效,第二条命令开始errorlevel的值都不会变。此处涉及批处理中的变量延迟问题,并不是errorlevel无效,而是对errorlevel变量的引用采用的是没开启变量延迟情况下的百分号%。 在循环和if多语句中,需要开启变量延迟的设置:setlocal EnableDelayedExpansion,即延迟环境变量扩展,告诉解释器在遇到复合语句的时候,不要将其作为一条语句同时处理,而是一条一条地去解释。但是这时如果仍然用百分号%来引用变量是不起作用的,必须用感叹号!,如!errorlevel!
setlocal EnableDelayedExpansion
net user admin /add
if !errorlevel! == 0 (
echo success
) else (
echo fail
)