Bash 另一个命令中的命令变量
Bash command variable inside another command
我正在尝试在脚本中执行 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;
这有什么具体原因吗?我该如何解决这个问题?
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。
我正在尝试在脚本中执行 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;
这有什么具体原因吗?我该如何解决这个问题?
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。