Bash Shell脚本IF语句出错

时间:2017-02-08 05:05:04

标签: bash macos sh

我试图让它作为一个launchd运行,我已经设置了plist并启用了监视路径来检查学生修改远程管理的时间。

我想要一个if语句来检查ARD代理是否正在运行并且没有运行kickstart命令。

当服务未运行时,它可以完美运行。但是当服务已经运行时,我收到此错误

/Users/user/Desktop/test.sh: line 3: [[: 14682  0   com.apple.RemoteDesktop.agent: syntax error in expression (error token is "0    com.apple.RemoteDesktop.agent")

这是脚本;

#!/bin/bash

if [[ $(launchctl list | grep '^\d.*RemoteDesktop.*') -eq "" ]]; then
    sudo    sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -users admin -access -on -privs -all
else
    exit 0
fi

如果有人能提供帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

你可以使用引号并写"$(launchctl list ...)",但它可能更干净:

#!/bin/bash

if ! launchctl list | grep -q '^\d.*RemoteDesktop.*'; then
    sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -users admin -access -on -privs -all
else
    exit 0
fi