我在Applescript中写了一些内容,我希望将其更改为shell脚本。 苹果脚本如下:
set computerlevel to do shell script "(profiles -P )" with administrator privileges
if computerlevel contains "F2CC78D2-A63F-45CB-AE7D-BF2221D41218" then
set theAnswer to "Active Directory Bind Present"
else
set theAnswer to "Active Directory Bind Not Present"
end if

它工作正常,但我想编写shell脚本版本。这是我到目前为止所提出的。
#!/bin/sh
configprofiles='profiles -P'
if $configprofiles == "F2CC78D2-A63F-45CB-AE7D-BF2221D41218"; then
echo "<result>Active Directory Bind Present.</result>"
else
echo "<result>Active Directory Bind Not Present.</result>"
fi
&#13;
我认为它有效,但它确实是一种误报。而不是看到整个F2CC78D2-A63F-45CB-AE7D-BF2221D41218是否存在,我相信它只是寻找导致误报的任何字符。有谁知道什么是错的?提前谢谢。
答案 0 :(得分:0)
只需要几个语法的东西......最重要的是在测试中添加[...]
。 (您也可以在与test
)
#!/bin/sh
if profiles -P | grep attribute | awk '{print $4}' | grep -q "F2CC78D2-A63F-45CB-AE7D-BF2221D41218"
then
echo "<result>Active Directory Bind Present.</result>"
else
echo "<result>Active Directory Bind Not Present.</result>"
fi
答案 1 :(得分:0)
#!/bin/sh
if profiles -P | grep attribute | awk '{print $4}' | grep -q "F2CC78D2-A63F-45CB-AE7D-BF2221D41218"
then
echo "<result>Active Directory Bind Present.</result>"
else
echo "<result>Active Directory Bind Not Present.</result>"
fi
答案 2 :(得分:0)
您的脚本几乎已完成,但比较完全正确。要创建&#34;包含&#34;与AppleScript中的比较一样,您可以在字符串周围包装asterix。我发现的另一件事是变量持有一个字符串而不是执行代码。要执行命令并将其输出设置为变量,您应该使用$(command)
。最后但并非最不重要的是,其他答案使用了所有额外的命令和管道,而shell本身可以很好地处理这个并且不需要这么复杂的方法。所以你的脚本看起来像:
#!/bin/sh
configprofiles=$(profiles -P)
if [[ $configprofiles == *"F2CC78D2-A63F-45CB-AE7D-BF2221D41218"* ]]
then
echo "<result>Active Directory Bind Present.</result>"
else
echo "<result>Active Directory Bind Not Present.</result>"
fi