我正在编写一个bash脚本来返回用户的显示名称。当我在控制台上运行命令时,我得到显示名称。当我运行从文本文件中读取输入的脚本时,我没有得到显示名称。
对于kma@abc.com,显示名称如下:Khbsd Muweu
输入文本文件(names.txt)包含以下数据:
"kma@abc.com"
"hja@abc.com"
"dgi@abc.com"
脚本如下:
while IFS='' read -r line || [[ -n "$line" ]]
do
echo "$line"
ldapsearch -v -LLL -Y GSSAPI -H ldap://padns1.abc.com -b "dc=abc,dc=com" userPrincipalName="$line" displayName -Q | grep "displayName: .*$" | awk '{print $2,$3}'
done < "$1"
此脚本保存为fnames.sh,脚本运行为:
bash fnames.sh names.txt
echo&#34; $ line&#34;打印文本文件中的内容,但ldapsearch命令不起作用。有人能让我在哪里错了吗? 我想将命令的输出(只是显示名称)存储在文本文件中。我怎么能这样做?
答案 0 :(得分:2)
如果您的输入文件实际上包含这些双引号,那就是造成问题的原因。
扩展后,您将使用userPrincipalName=""kma@abc.com""
,也就是说,字面上要查找"kma@abc.com"
(带引号),而不是kma@abc.com
(不带引号)。您还应该检查输入文件是否使用了正确的行结尾。混合运输可以默默地造成严重破坏。