2016-10-25 165 views
0

我有bash的腳本:如何解決分詞

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

請告訴我'ldapsearch的-xZZLLLD CN =管理員,DC =例如,DC = COM -w -b DC =實施例的輸出, dc = com'(&(objectclass = inetOrgPerson)(memberOf = cn ='$ groups',ou = Groups,dc = example,dc = com))'dn'? – heemayl

+0

@heemayl dn:uid = user,ou = People,dc = example,dc = com – Nikita

+0

請編輯您的問題並添加它。 – heemayl

回答

1

的問題是從命令的輸出具有在每行的空間,即它輸出dn: uid=user,ou=People,dc=example,dc=com(與dnuid=user,ou=People,dc=example,dc=com之間的空間),而遍歷輸出爲for,由於IFS(空格,製表符,換行符)的值分割,因此每行會得到兩個字符串。

遍歷每行,使用while - read構建體:

ldapsearch -xZZLLLD ... | while IFS= read -r line; do echo "$line"; done 
+0

sry,但沒有工作:(我需要添加構造? – Nikita