命令返回一个列表,应该进行解析

时间:2017-06-23 08:45:25

标签: bash for-loop foreach while-loop do-while

我有shell程序,它返回一个列表:

list-all-my-users.sh

结果是:

username1
username2
username3
username4
username5

现在我想在另一个程序中使用结果

ldapsearch -D "adminuser" -w "password" -p 389 -h server.domain.de -b "DC=ORG,DC=com" -s sub "(&(objectclass=person)(cn=<USERNAME))" | grep employeeID: | awk '{print $2}'

我可以向某人展示一个例子吗?我想避免将结果保存在文本文件中并解析它们。

while(list-all-my-users.sh)
{
   foreach result
   {
      # LDAPSearch
   }
}

1 个答案:

答案 0 :(得分:0)

使用while循环

while read username
do
ldapsearch -D "adminuser" -w "password" \
           -p 389 -h server.domain.de \
           -b "DC=ORG,DC=com" \
           -s sub "(&(objectclass=person)(cn=${username}))" | 
           awk '/employeeID:/{print $2}'
done<list-all-my-users.sh

您可能已经注意到,我们正在使用list-all-my-users.sh变量将每个结果从ldapsearch传递到${username}。此外,您无需同时使用grepawk。而是使用awk构造在/pattern/中搜索模式。