相关疑难解决方法(0)

在Bash脚本中引发错误

我想在Bash脚本中引发错误,消息"Test cases Failed !!!".在Bash中如何做到这一点?

例如:

if [ condition ]; then
    raise error "Test cases failed !!!"
fi
Run Code Online (Sandbox Code Playgroud)

linux error-handling bash shell

84
推荐指数
5
解决办法
6万
查看次数

退出Bash中命令替换的变量赋值代码

我很困惑这个命令在明确地执行变量赋值时会返回什么错误代码并且使用命令替换:

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手册页等权威人士那里看到这一点的参考,请帮我找到它出来,再次感谢!

linux bash shell exit-code

48
推荐指数
3
解决办法
4万
查看次数

如何检查 if/else 中是否存在标签

如何检查我的 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)

但它没有用

git bash if-statement

7
推荐指数
2
解决办法
8500
查看次数

Bash条件基于退出命令代码

在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)

我怎么做到这一点?谢谢!

bash shell command process exit-code

2
推荐指数
2
解决办法
1919
查看次数

标签 统计

bash ×4

shell ×3

exit-code ×2

linux ×2

command ×1

error-handling ×1

git ×1

if-statement ×1

process ×1