Windows系统下如何使用curl -f判断命令执行是否成功
你遇到的报错是因为Windows cmd(命令提示符)的if语法规则和Linux Bash完全不同:cmd的if默认用于判断文件是否存在、字符串/数值比较这类条件,不能直接跟命令作为判断条件,你写的if curl -f ...会被cmd错误解析为if的语法参数,因此抛出-f was unexpected的错误。
方法1:使用条件执行符(你自己找到的写法)
cmd中&&代表仅当前面的命令执行成功(退出码为0)时才执行后面的内容,||代表仅当前面的命令执行失败(退出码非0)时才执行后面的内容,>nul用于屏蔽curl命令的默认输出。
单命令简写版:
>nul curl -f 你的其他curl参数 && echo SUCCESS || echo FAIL
多行命令块版本(需要执行多条命令时用括号包裹代码块,注意括号左侧要留空格):
>nul curl -f 你的其他curl参数 && ( echo SUCCESS rem 成功后要执行的其他命令写在这里 ) || ( echo FAIL rem 失败后要执行的其他命令写在这里 )
方法2:使用%errorlevel%内置变量
cmd中所有命令执行后的退出码都会存在内置变量%errorlevel%中,0代表成功,非0代表失败:
curl -f 你的其他curl参数 >nul if %errorlevel% equ 0 ( echo SUCCESS ) else ( echo FAIL )
注意:如果是写在批处理脚本中且开启了延迟变量扩展,需要把%errorlevel%替换为!errorlevel!;同时else必须和if块的右括号放在同一行,否则会触发语法错误。
如果你用的是PowerShell
如果是在PowerShell环境下运行,判断逻辑更接近Bash:
curl -f 你的其他curl参数 >$null if ($?) { Write-Host "SUCCESS" } else { Write-Host "FAIL" }
也可以通过$LASTEXITCODE变量读取curl的实际退出码做更精细的判断。
内容的提问来源于stack exchange,提问作者Maktavish
相关产品推荐
相关产品推荐

