[bash scripting] stdin aus file

Bash, Shell, PHP, Python, Perl, CGI
ganjasmokerjoe
Posts: 39
Joined: 2002-12-11 13:28
Location: Zürich

[bash scripting] stdin aus file

Post by ganjasmokerjoe »

Hi Freaks!

ich habe ein Bash Script welches Aktionen auf den Kunden Domains ausfürt. Allerdings will ich jetzt die Domains aus einer Datei oder via ls /www/kunden/ | sort | xyz_exec.sh ins Script bekommen.

Bis jetzt habe ich diese probleme wie folgt in Perl gelöst:

Code: Select all


#!/usr/bin/perl

while(<STDIN>){
        @pwd=split(/:/,$_);
        print "Repariere - User: $pwd[0], Server: $pwd[4], Home: $pwd[5]";
        #blablabla
        #blablabla
        #blablabla
        #blablabla
        #blablabla
        #blablabla
        #blablabla
        #blablabla
print "n";
}
#EOF
wie kann ich das in der bash lösen?
Ich bin leider bei meinem Problem auf die Bash Angewiesen und kann Perl hier nicht verwenden.

Hab jetzt ein bischen getestet aber nichts rausgefunden, ich weiss eigentlich wie es geht nur kann ich mich bei diesem scheiss wetter nicht errinern :(

vielen dank für nen kleinen dank anstoss
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

Re: [bash scripting] stdin aus file

Post by captaincrunch »

Wie wär's denn hiermit :

Code: Select all

#!/bin/sh
while read WASAUCHIMMER
 do WASAUCHIMMER
done
Nicht getestet, da ich nicht genau weiß, was aus der Pipe kommt ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
ganjasmokerjoe
Posts: 39
Joined: 2002-12-11 13:28
Location: Zürich

Re: [bash scripting] stdin aus file

Post by ganjasmokerjoe »

danke für den tipp allerdings hab ich jetzt variabeln probleme...
ich verliere den inhalt der übergeben wird :(

habs auch mit file angaben versucht, will auch nicht klappen

Code: Select all

#!/bin/bash

while read $1
do

        domain=$1
        monat=5


echo "${traffic} KB Traffic im ${monat}.2003 der Domain ${domain}"
done

ich habe alles mögliche versucht, es gelingt mir einfach nicht die eingaben oder dateien zu verarbeite.....

hmmm, was nun?

google weiss leider auch nichts
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: [bash scripting] stdin aus file

Post by dea »

ganjasmokerjoe wrote:danke für den tipp allerdings hab ich jetzt variabeln probleme...
ich verliere den inhalt der übergeben wird :(

habs auch mit file angaben versucht, will auch nicht klappen

Code: Select all

#!/bin/bash

while read $1
do

        domain=$1
        monat=5


echo "${traffic} KB Traffic im ${monat}.2003 der Domain ${domain}"
done

ich habe alles mögliche versucht, es gelingt mir einfach nicht die eingaben oder dateien zu verarbeite.....

hmmm, was nun?

google weiss leider auch nichts
Aber ich ;)

Nimm bloß nich $1 bzw. generell $n! Dabei handelt es sich nämlich um die dem Skript übergebenen sog. 'positional Parameters' (man bash) bzw. gibt $0 den vollständigen Aufruf zurück.

Mit Deiner Zeile

Code: Select all

while read $1
do
  something
done
überschreibst Du die Aufrufparameter und verlierst sie somit.

Wenn Du die Eingabedaten in Dateiform vorliegen hättest (ls /www/kunden/ | sort > /pfad/zur/datei) böte sich folgende Vorgehensweise an:

Code: Select all

./skript.sh /pfad/zur/datei

# im Skript dann entweder:

cat ${1} | while read line
do
  something ${line}
done

# oder auch:

while read line
do
  something ${line}
done < ${1}
Es gibt natürlich noch mehr Möglicheiten, das sind aber die "Klassiker". "line" ist kein Befehl oder irgendwas spezielles, es ist lediglich ein Variablenname. Bewährt hat es sich, für diese Variable(n) einen aussagkräftigen Namen zu verwenden. Du kanns auch mehrere Variablen in der Zeile verwenden, Trenner ist dann $IFS (std. ein Leerzeichen oder ein Tab), sowas macht zum Beispiel mit einer *.csv oder *.tsv sehr viel Spass :)
ganjasmokerjoe
Posts: 39
Joined: 2002-12-11 13:28
Location: Zürich

Re: [bash scripting] stdin aus file

Post by ganjasmokerjoe »

Hi!

Variante 1 klappt Super, Variante 2 liefert leider nur müll auf die console aber ich bin auch mit Variante 1 zufrieden.


Vielen Dank für den entscheidenden tipp :-D
dea
Posts: 532
Joined: 2002-08-13 12:05

Re: [bash scripting] stdin aus file

Post by dea »

ganjasmokerjoe wrote:Hi!

Variante 1 klappt Super, Variante 2 liefert leider nur müll auf die console aber ich bin auch mit Variante 1 zufrieden.


Vielen Dank für den entscheidenden tipp :-D
Gerne, beim bash-Skripten helfe ich gerne :)

Es kann sein, dass Variante 2 fehlerhaft ist, das läge dann daran, dass ich persönlich wg. besserer Lesbarkeit immer Variante 1 verwende (funktional sind beide gleich)