我的问题与之前多次问过的问题类似。我有一个脚本可以检查计算机上的多个变量并记录该数据。例如,我正在检查计算机上的防火墙和加密,如果其中一个或两个都关闭,我需要准确回显关闭的内容。我正在考虑使用类似的东西......
if [ $firewall -eq "Off" ] || [ $Encryption -eq "Off" ]; then
echo Please fix ****
else
echo "Everything is great"
fi
我遇到了如何解析第二行中的数据的问题。
编辑:我得到了一些很好的答案,但我很好奇的是,如果我有一个我正在检查的 5 件事的列表,我将如何处理它,并且说其中2个不符合标准。我想只输出那些没有传递给最终用户的内容,以便他们知道需要修复什么?
鉴于上面的示例,假设我正在测试防火墙、加密、补丁和磁盘空间。如果用户需要修复防火墙和加密,我只想输出这两个。如果另一位用户的磁盘空间有问题,一个一个的问题,而另一位用户一切正常,则会出现一条消息,表明一切正常。
编辑2:*我正在提取我需要的信息,唯一的问题是我需要两个不同的弹出窗口之一。要么显示到底出了什么问题,可能是任意数量的问题,要么显示一切正常。
到目前为止,我已经编写了下面的代码,但它向我显示了两个窗口,一个显示错误,另一个按顺序弹出“一切都很好”。我哪里出错了?
for i in Software Firewall XProtect; do
if [[ "${!i}" == "Off" ]]; then
osascript -e 'tell app "System Events" to display dialog "Compliance Check results \r \r'$i' needs attention\r \rPress OK to continue."'
Elseif
osascript -e 'tell app "System Events" to display dialog "Compliance Check results \r \rEverything looks good. \r \rPress OK to continue."'
fi
done
预先感谢您提供的所有帮助。
最佳答案
-eq
仅用于整数比较。
最好像这样简化代码:
if [ "$firewall" = "Off" ]; then
echo "firewall is Off"
elif [ "$Encryption" = "Off" ]; then
echo "Encryption is Off"
else
echo "Everything is great"
fi
编辑:要检查多个变量,您可以使用此for循环
:
for i in A B C D; do
[[ "${!i}" == "Off" ]] && echo "$i is Off"
done
关于bash - Bash 中输出错误的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24018979/