ipset 命令的输出未存储到变量

ipset 命令的输出未存储到变量

我正在构建一个脚本来检测 IPSET 是否存在。

#!/bin/bash
str=$(/usr/sbin/ipset test IPsetName 1.1.1.1)

echo "$str" #outputs blank line

if [[ $str = *"The set with the given name does not exist"* ]]; then
  echo "IPsetName not found"
fi

当我运行此脚本时,我得到以下输出:

ipset v6.29: The set with the given name does not exist

然后是一个空行echo "$str",我没有看到 if 语句的预期输出。

如何将 ipset 命令输出存储到变量中?

答案1

感谢@StephenHarris

ipset 命令的输出在 stderr(而不是 stdout)上生成,并将2>&1输出捕获到变量。

str=$(/usr/sbin/ipset test IPsetName 1.1.1.1 2>&1)

if [[ $str = *"The set with the given name does not exist"* ]]; then
   echo "IPsetName not found"
fi

现在这个 if 语句按预期工作了!

相关内容