Bash脚本条件逻辑实现:如何依据Retrieve_api_key执行结果选择执行命令
正确实现Bash脚本的条件判断逻辑
你的原脚本条件判断逻辑完全错误,[ "$Retrieve_api_key" -x "$Create_retrieve_api_key" ]是在检查第二个参数对应的路径是否为可执行文件,和你要实现的“执行命令并判断结果”需求完全不相关。
要实现「若Retrieve_api_key命令成功执行且有输出则跳过创建,否则执行Create_retrieve_api_key」的逻辑,正确的脚本实现如下:
# 执行获取API Key的命令,捕获输出并屏蔽错误信息 api_key_result=$($Retrieve_api_key 2>/dev/null) # 获取命令的退出状态码(0表示执行成功) retrieve_status=$? # 判断:命令执行成功 且 输出内容不为空 if [ $retrieve_status -eq 0 ] && [ -n "$api_key_result" ]; then echo "API Key获取成功,无需执行创建操作" # 可选:在这里使用获取到的结果,比如 echo "获取到的Key: $api_key_result" else echo "API Key获取失败,执行创建命令" $Create_retrieve_api_key fi
关键说明:
$($Retrieve_api_key 2>/dev/null):执行变量中存储的命令,将标准错误输出重定向到/dev/null避免干扰,同时把标准输出捕获到变量api_key_result中retrieve_status=$?:获取上一条命令的退出状态码,Bash中0代表命令执行成功,非0代表失败[ $retrieve_status -eq 0 ] && [ -n "$api_key_result" ]:同时满足两个条件才会跳过创建操作:命令执行成功,且有实际输出内容- 若不满足条件,直接执行
$Create_retrieve_api_key变量中存储的创建命令
内容的提问来源于stack exchange,提问作者Dannymay VEVO
相关产品推荐
相关产品推荐

