我有bash-script:
for i i in `ldapsearch -xZZLLLD cn=admin,dc=example,dc=com -w -b dc=example,dc=com '(&(objectclass=inetOrgPerson)(memberOf=cn='$groups',ou=Groups,dc=example,dc=com))' dn`
do
echo $i
done
输出:
dn:
uid=user1,ou=People,dc=example,dc=com
dn:
uid=user2,ou=People,dc=example,dc=com
问题是输出不正确。我读到了“分词”,但不明白如何解决它。我需要得到:
dn: uid=user1,ou=People,dc=example,dc=com
dn: uid=user2,ou=People,dc=example,dc=com
输出命令:
ldapsearch -xZZLLLD cn=admin,dc=example,dc=com -w -b dc=example,dc=com '(&(objectclass=inetOrgPerson)(memberOf=cn='$groups',ou=Groups,dc=example,dc=com))' dn
dn: uid=user,ou=People,dc=example,dc=com
dn: uid=user1,ou=People,dc=example,dc=com
dn: uid=user2,ou=People,dc=example,dc=com
答案 0 :(得分:1)
问题是来自命令的输出在每一行中都有空格,即它输出SHOWs
(dn: uid=user,ou=People,dc=example,dc=com
和dn
之间的空格),同时使用{{1}迭代输出},由于在uid=user,ou=People,dc=example,dc=com
(空格,制表符,换行符)的值上进行单词拆分,每行会得到两个字符串。
要遍历每一行,请使用for
- IFS
构造:
while