gpt4 book ai didi

bash - 将命令输出保存在变量上并检查退出状态

转载 作者:行者123 更新时间:2023-11-29 08:54:43 26 4
gpt4 key购买 nike

下面的命令会解析google ip

> ip=`dig +short google.com`
> echo $ip
> 216.58.210.238

有时(尤其是当互联网连接丢失时)此命令会失败并出现此错误

> ;; connection timed out; no servers could be reached

当命令失败并且我使用 $# 时,分配的输出为 0

> ip=`dig +short google.com`
> echo $#
> 0
> echo $ip # Command failed
> ;; connection timed out; no servers could be reached

如何将命令的输出保存到变量中,并检查命令是否成功?

最佳答案

您可以避免访问 $?,只需:

if ip=$(dig +short google.com); then
# Success.
else
# Failure.
fi

示例:

以下函数将打印“失败”并返回 1。

print_and_fail() { printf '%s' fail; return 1; }

因此,如果我们执行以下操作:

if foo=$(print_and_fail); then printf '%s\n' "$foo";fi

我们将没有输出,但将 print_and_fail 输出存储到 $foo - 在本例中为“失败”。

但是,请看下面的函数,它将打印“成功”并返回 0。

print_and_succeed() { printf '%s' success; return 0; }

让我们看看现在会发生什么:

$ if foo=$(print_and_succeed); then printf '%s\n' "$foo";fi
$ success

关于bash - 将命令输出保存在变量上并检查退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36921658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com