1

我正在编写一个应用程序,该应用程序将帮助用户绑定到我们服务器的打开目录(如果不存在)。它将测试命令的输出是否为空,并帮助删除任何旧的打开目录并添加新目录。

如果脚本遇到某些条件,我应该如何将新域名添加到 Open Directory Server 时遇到问题。我究竟做错了什么?有关示例,请参见输出...

#!/bin/bash -x 

# FUNCTIONS

# Verify that foo.com exists
function check_new () {

# LOCAL VARIABLES
OLD="bar.com"
NEW="foo.com"

for i in `dscl localhost -list /LDAPv3`; do
    if [[ $i !=  0 ]]; then
        dsconfigldap -v -r ${OLD} && dsconfigldap -v -a ${NEW}
    else 
        dsconfigldap -v -a ${NEW}
    fi
done
}

# MAIN CODE 

exec 1> >(logger -s -t $(basename $0)) 2>&1
check_new; exit 0 

样本输出

案例1)不存在服务器(如果我们不展开$?退出状态,则不返回任何内容。我们应该添加新域名。

$ dscl localhost -list /LDAPv3; echo $?
0

案例 2) 旧服务器存在。我们应该删除旧服务器并添加新服务器。

$ dscl localhost -list /LDAPv3; echo $?
bar.com
0

案例 3) 存在旧服务器和新服务器。忽略新服务器并删除旧服务器。

$ dscl localhost -list /LDAPv3; echo $?
foo.com
bar.com
0

案例 4) 新服务器存在。没做什么。

$ dscl localhost -list /LDAPv3; echo $?
foo.com
0
4

1 回答 1

1

这个说法:

[[ $i !=  0 ]];

不检查变量是否为空。它只是验证它不等于整数 0。

而是尝试这样的事情:

[[ ! -z $i ]]

操作员将-z检查字符串的长度是否为零。设置! -z将检查长度是否不为零。

于 2015-08-08T02:16:00.387 回答