![ipset 命令的输出未存储到变量](https://linux22.com/image/11330/ipset%20%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E6%9C%AA%E5%AD%98%E5%82%A8%E5%88%B0%E5%8F%98%E9%87%8F.png)
我正在构建一个脚本来检测 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 语句按预期工作了!