适用于Applescript,但不适用于Shell

时间:2015-03-23 20:28:57

标签: bash applescript

我在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;
&#13;
&#13;

我认为它有效,但它确实是一种误报。而不是看到整个F2CC78D2-A63F-45CB-AE7D-BF2221D41218是否存在,我相信它只是寻找导致误报的任何字符。有谁知道什么是错的?提前谢谢。

3 个答案:

答案 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