我的问题类似于之前多次询问过的问题。我有一个脚本,可以检查机器上的多个变量并记录该数据。例如,我正在检查机器上的防火墙和加密,如果其中一个或两个都关闭,我需要确切地回显关闭的内容。我正在考虑使用类似的东西......
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
提前感谢您的帮助。
答案 0 :(得分:2)
-eq
仅用于整数比较。
最好像这样简化代码:
if [ "$firewall" = "Off" ]; then
echo "firewall is Off"
elif [ "$Encryption" = "Off" ]; then
echo "Encryption is Off"
else
echo "Everything is great"
fi
编辑:要检查多个变量,您可以使用此for loop
:
for i in A B C D; do
[[ "${!i}" == "Off" ]] && echo "$i is Off"
done
答案 1 :(得分:0)
试试这个
if [[ ${firewall:-} = "Off" || ${Encryption:-} = "Off" ]]; then
echo Please fix ****
else
echo "Everything is great"
fi