2016-11-21 16 views
0

ユーザーの表示名を返すためのbashスクリプトを作成しています。コンソールでコマンドを実行すると、表示名が表示されます。私は、テキストファイルから入力を読み取るスクリプトを実行すると、私は表示名を取得しません。 [email protected]についてldapsearchをテキストファイルに出力

、表示名は次のようである:Khbsd Muweu

入力テキストファイル(names.txt)は、以下のデータを含む:

"[email protected]" 
"[email protected]" 
"[email protected]" 

スクリプトは以下の通りであります:

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 "$ line"はテキストファイルから内容を出力しますが、ldapsearchコマンドは機能しません。誰かが私が間違っている場所に私をさせることができる? コマンドの出力(表示名のみ)をテキストファイルに保存します。どうやってやるの?

+1

あなたのスクリプトに 'set -x'を追加しようとしましたか?スクリプトが期待通りのことをしていることを確認するための素早い方法です。 – eduffy

答えて

2

実際に入力ファイルにこれらの二重引用符が含まれていると、それが原因です。

拡張した後は、userPrincipalName=""[email protected]""を使用します。すなわち、"[email protected]"(引用符付き)は、[email protected](引用符なし)ではありません。また、入力ファイルが正しい行末を使用していることを確認する必要があります。混じり合ったキャリッジリターンは、黙々と混乱を招く可能性があります。

+0

ラマ、はい引用符が問題でした。これは、入力ファイルから引用符を削除した後に動作します。 – krish

+0

@CrazyKris - この回答があなたの問題の解決に役立つ場合は、投票矢印の下にあるチェックマークを使用して[受け入れられるとマークする](https://stackoverflow.com/help/someone-answers)を検討してください。ありがとうございました! –

関連する問題