gpt4 book ai didi

linux - 如何将此命令的结果存储为 bash 脚本中的变量?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:44 25 4
gpt4 key购买 nike

我正在构建一个简单的工具,它可以让我知道网站“siim.ml”是否可以解析。如果我在 Linux 命令行中运行命令“ping siim.ml | grep“名称或服务未知””,那么如果站点无法解析,它只会返回文本。任何工作站点都不会返回任何内容。

使用它,我想检查该命令的结果是否为空,如果是,我想执行一个操作。

问题是无论我做什么变量都是空的!它仍然只是将结果打印到标准输出而不是存储它。

我已经尝试在 `command` 和 $(command) 之间切换,并使用 grep 删除了管道,但它不起作用

#!/bin/bash

result=$(ping siim.ml | grep "Name or service not known")

echo "Result var = " $result

if ["$result" = ""]
then
#siim.ml resolved
#/usr/local/bin/textMe/testSite.sh "siim.ml has resolved"
echo "It would send the text"
fi

当我运行脚本时,它会打印以下内容:

ping: siim.ml: Name or service not known
Result var =
It would send the text

最佳答案

这几乎可以肯定是因为该错误将进入标准错误而不是标准输出(后者将由$()捕获)。

您可以将标准错误组合到输出流中,如下所示:

result=$(ping siim.ml 2>&1 | grep "Name or service not known")

此外,您需要用空格将 [] 字符与表达式分隔开:

if [ "$result" = "" ]

关于linux - 如何将此命令的结果存储为 bash 脚本中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56763239/

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