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

标签 linux bash

我正在构建一个简单的工具,它可以让我知道网站“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/

相关文章:

c - 如何将进程移动到前台

linux - 如何剪切前n列和后n列?

linux - 如何使用sed删除文件中不以数字开头且左侧没有空格的行

html - 使用 Linux -poppler-utils-pdftohtml 从 pdf 生成带有图像的 html

android - android studio 在 Linux dev 机器上将 sqlite db 保存在哪里?

android - protobyname 错误的任何解决方法?

bash - 新的 cron 脚本用于检查 davmail pid,如果正在运行则不执行任何操作。如果没有运行重启

c - execl ("/bin/bash","bash","-l","-c","env",NULL),怎么了?

c# - 异常: System. ComponentModel.Win32Exception : Invalid data at System. Diagnostics.Process.Start_shell

c++ - 如何定义多个源文件访问的linux内核变量?