PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash, grep und der output


nalye
2010-08-10, 16:54:17
Ich bin gerade am Verzweifeln... Ich habe folgendes Script, welches mir bei einem BlueQuartz-System den Server zum jeweiligen Nutzer nennt:


#!/bin/bash

tab=$'\t'

while read line
do
echo -e "$line"
bqinfo `echo -e "$line" | grep "$line" users | cut -f 3 -d "$tab"` | sed -e "s/home\/sites\///g" | cut -f 1 -d " "
echo -e " "
done < quota


Nicht schön, aber es funktioniert erstmal...
Der Output ist Folgender:


<Name>
<Seite>

<Name>
<Seite>

<Name>
<Seite>

<Name>
<Seite>


wobei <Seite> mail www.irgendwas oder auch mail.irgendwas sein kann...

Eben nach dieser Zeile möchte ich in einer zugehörigen Datei grepen, ich schaffe es aber ums Verrecken nicht, den Output des bqinfo-Befehls an grep weiter zu geben... Hints anyone?!?

Berni
2010-08-10, 22:47:52
Was ist denn bqinfo? Gib mal bitte ein Beispiel was das genau roh zurückgibt.

Check auch mal wo der Output hinkommt:
bqinfo xyz >/tmp/stdout.txt
bqinfo xyz 2>/tmp/stderr.txt
(xyz durch irgendwas Sinnvolles ersetzen)

nalye
2010-08-12, 14:03:05
Geht jetzt alles wie es soll :)


#!/bin/bash

tab=$'\t'

while read line
do
echo -e "$line"
var=$(bqinfo `grep "$line" users | cut -f 3 -d "$tab"` | sed -e "s/home\/sites\///g" | cut -f 1 -d " ")

if grep -q $var msadressen
then
grep $var msadressen | cut -f 1 -d " "
else
echo -ne "\e[1;31mKeine Mailadresse gefunden!\e[0m \n"
fi

echo -e ""
done < quota

Gast
2010-08-15, 15:41:57
Du solltest `` statt $() verwenden, zwecks Portabilität.
In deinem Falle brauchst du dazu wohl noch ne Variable, aber das macht das ganze dann auch lesbarer.