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