2017-01-10 8 views
0

スクリプト内でldapsearchコマンドを実行しようとしています。続き別のコマンド内のBashコマンド変数

が、それは動作しますが、以下のような値をハードコーディングした場合、上記のコードは次のようなエラーldap_bind: Invalid credentials (49)

で実行されます

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; 

を動作しません。

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; 

これには明確な理由がありますか?どのように私はこれを修正することができますか?

答えて

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も参照してください。

+0

これは、 '-D'への引数を一重引用符で囲まずに、変数だけを展開するだけです。 – Inian

+0

そうです、それは私の前提です。 – Julian

+0

@Inian元の単一引用符は、コマンドに渡されません。コマンドを呼び出す前にシェルによって削除されます。彼らはそれらに含まれている各キャラクターをエスケープするためにのみ使用されます。 – chepner

関連する問題