2016-11-21 3 views
0

Ich schreibe ein Bash-Skript, um die Anzeigenamen für Benutzer zurückzugeben. Wenn ich den Befehl auf der Konsole ausführe, erhalte ich den Anzeigenamen. Wenn ich das Skript ausführe, das Eingaben aus einer Textdatei liest, erhalte ich den Anzeigenamen nicht.ldapsearch Ausgabe in eine Textdatei

Für [email protected], der Anzeigename ist wie: Khbsd Muweu

Die Eingangstextdatei (names.txt) enthält die folgenden Daten:

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

Das Skript ist als unten:

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" 

Dieses Skript als fnames.sh und das Skript gespeichert wird, ausgeführt wird:

bash fnames.sh names.txt 

Das Echo "$ line" druckt den Inhalt aus der Textdatei, aber der Befehl ldapsearch funktioniert nicht. Kann mir jemand sagen, wo ich falsch liege? Ich möchte die Ausgabe des Befehls (nur den Anzeigenamen) in einer Textdatei speichern. Wie kann ich das machen?

+1

Haben Sie versucht, 'set -x' zu Ihrem Skript hinzuzufügen? Es ist eine schnelle Möglichkeit zu überprüfen, ob Ihr Skript das tut, was Sie erwarten. – eduffy

Antwort

2

Wenn Ihre Eingabedatei tatsächlich diese doppelten Anführungszeichen enthält, verursacht das das Problem.

Einmal erweitert, werden Sie userPrincipalName=""[email protected]"" verwenden, das heißt, wörtlich für "[email protected]" (mit Anführungszeichen) auf der Suche zu sagen, nicht [email protected] (ohne Anführungszeichen). Sie sollten auch überprüfen, ob Ihre Eingabedatei die korrekten Zeilenenden verwendet. Wagenrückläufe, die eingemischt werden, können lautlos Verwüstungen anrichten.

+0

Mr. Llama, ja die Zitate waren das Problem. Es funktioniert nach dem Entfernen der Anführungszeichen aus der Eingabedatei. – krish

+0

@CrazyKris - Wenn diese Antwort zur Lösung Ihres Problems beigetragen hat, beachten Sie bitte die Markierung [als akzeptiert] (https://stackoverflow.com/help/someone-answers) mit dem Häkchen unter den Abstimmpfeilen. Vielen Dank! –

Verwandte Themen