我的.bash_profile中有一个bash函数,它没有将结果返回给终端。 当我通过CLI正常运行命令时返回结果。
ldap_check_cleaup ()
{
ldapsearch -LLL -h itdsvbms.SomeDomain.org -p 389 \
-D "uid=SomeUser,o=SomeDomain.org" -w SomePassWord -b "ou=People,o=SomeDomain.org" \
-s sub '(&(ReservedRMAliases=$1)(!(RMid=*))(RMAliasUpdateDate=12/01/2012 19:02:00)(RMAliasStatus=IN)(status=IN))' | \
tee /dev/tty
}
运行 ldap_check_clenaup TestRecord 从bash提示符执行时不返回任何输出。 TestRecord 确实存在,当从CLI运行以下命令时,将返回正确的记录:
ldapsearch -LLL -h itdsvbms.SomeDomain.org -p 389 -D "uid=SomeUser,o=SomeDomain.org" \
-w SomePassWord -b "ou=People,o=SomeDomain.org" \
-s sub '(&(ReservedRMAliases=TestRecord)(!(RMid=***))(RMAliasUpdateDate=12/01/2012 19:02:00)(RMAliasStatus=IN)(status=IN))' | \
tee /dev/tty`
当我尝试将此ldapsearch和参数用作bash函数时,只会出现缺少输出。
我认为这可能与使用'而不是'作为属性(!(RMid = *))有关,但我不确定,请帮忙。
答案 0 :(得分:2)
您需要在包含$1
的参数周围使用双引号。在单引号字符串中不执行可变插值。