Bash命令变量在另一个命令中

时间:2017-01-10 12:36:27

标签: linux bash ldap openldap

我正在尝试在脚本中执行ldapsearch命令。

以下无效

ADMIN_USER="$(whoami)";

ldapmodify -h myldapserver  -p 23223 -D 'uid=$ADMIN_USER,ou=people,ou=company,dc=corpcom,dc=com' -w "$ADMIN_PWD" -f /tmp/reset_password.ldif.$PID;

以上错误ldap_bind: Invalid credentials (49)

执行上述代码

如果硬编码如下所示的值,则可行。

ADMIN_USER="$(whoami)";

ldapmodify -h myldapserver -p 23223 -D 'uid=adminuser,ou=people,ou=company,dc=corpcom,dc=com' -w "$ADMIN_PWD" -f /tmp/reset_password.ldif.$PID;

这有什么特别的原因吗?我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:2)

Bash没有扩展变量,因为您将其括在单引号中。将字符串更改为使用双引号:

ADMIN_USER="$(whoami)";
ldapmodify -h myldapserver -p 23223 -D "uid=${ADMIN_USER},ou=people,ou=company,dc=corpcom,dc=com" -w "$ADMIN_PWD" -f /tmp/reset_password.ldif.$PID;

另见this answer