我想在Bash脚本中引发错误,消息"Test cases Failed !!!".在Bash中如何做到这一点?
例如:
if [ condition ]; then
raise error "Test cases failed !!!"
fi
Run Code Online (Sandbox Code Playgroud) 我很困惑这个命令在明确地执行变量赋值时会返回什么错误代码并且使用命令替换:
a=$(false); echo $?
Run Code Online (Sandbox Code Playgroud)
它输出1,让我认为变量赋值不会扫描或产生最后一个错误代码.但是当我尝试这个时:
false; a=""; echo $?
Run Code Online (Sandbox Code Playgroud)
它输出0,显然这是a=""返回和它覆盖1返回的false.
我想知道为什么会发生这种情况,变量赋值中是否存在与其他正常命令不同的特殊性?或者只是因为a=$(false)被认为是一个命令,只有命令替换部分才有意义?
- 更新 -
谢谢大家,从答案和评论中我得到了"当您使用命令替换分配变量时,退出状态是命令的状态." (由@Barmar提供),这个解释非常清晰易懂,但对于程序员来说说话不够精确,我想从TLDP或GNU手册页等权威人士那里看到这一点的参考,请帮我找到它出来,再次感谢!
如何检查我的 GIT 存储库中是否存在标签。我得到一些标记名作为输入,我必须检查它是否是带有if else statement.
TAG="tagname"的有效标记
我试过:
if [ git rev-parse ${TAG} >/dev/null 2>&1 ]; then
echo "tag exists";
else
echo "tag does not exist";
Run Code Online (Sandbox Code Playgroud)
但它没有用
在Bash中,我想要一个if语句,它基于运行命令的退出代码.例如:
#!/bin/bash
if [ ./success.sh ]; then
echo "First: success!"
else
echo "First: failure!"
fi
if [ ./failure.sh ]; then
echo "Second: success!"
else
echo "Second: failure!"
fi
Run Code Online (Sandbox Code Playgroud)
success.sh
#!/bin/bash
exit 0
Run Code Online (Sandbox Code Playgroud)
failure.sh
#!/bin/bash
exit 1
Run Code Online (Sandbox Code Playgroud)
这应打印出来:
First: success!
Second: failure!
Run Code Online (Sandbox Code Playgroud)
我怎么做到这一点?谢谢!