Kommandosubstitution und egrep

G

guepier

Grünschnabel
Hallo,

ich bin auf einem debain-basierendem System mit der Shell (möglicherweise auch die dash, ist leider nicht mein Server) unterwegs

Ich habe das Problem, dass ich in einer While-Schleife eine Datei mittels egrep nach bestimmten Einträgen durchsuchen möchte. Die Kommandosubstition scheint zu funktionieren, wenn ich den Befehl so eingebe, der entsprechende Eintrag auch gefunden wird. Ausgegeben wird aber nur die echo-Zeile (um den Befehl zu testen). Hat jemand eine Idee?

Danke

hier der Code
#!/bin/sh

echo ${suchstring}

for datei in rbl-testdatei
do
echo "Es wird die Datei ${datei} durchsucht"
for suche in ${suchstring}
do
egrep '${suche}' rbl-testdatei
echo "egrep '${suche}' rbl-testdatei"
done
echo
done

und hier die Ausgabe:

213\.207\.36\.1/32 213\.207\.36\.0/31 213\.207\.36\.0/30 213\.207\.36\.0/29 213\.207\.36\.0/28 213\.207\.36\.0/27 213\.207\.36\.0/26 213\.207\.36\.0/25 213\.207\.36\.0/24 213\.207\.36\.0/23 213\.207\.36\.0/22 213\.207\.32\.0/21 213\.207\.32\.0/20 213\.207\.32\.0/19 213\.207\.0\.0/18 213\.207\.0\.0/17 213\.207\.0\.0/16 213\.206\.0\.0/15 213\.204\.0\.0/14 213\.200\.0\.0/13 213\.192\.0\.0/12
Es wird die Datei rbl-testdatei durchsucht
egrep '213\.207\.36\.1/32' rbl-testdatei
egrep '213\.207\.36\.0/31' rbl-testdatei
egrep '213\.207\.36\.0/30' rbl-testdatei
egrep '213\.207\.36\.0/29' rbl-testdatei
egrep '213\.207\.36\.0/28' rbl-testdatei
egrep '213\.207\.36\.0/27' rbl-testdatei
egrep '213\.207\.36\.0/26' rbl-testdatei
egrep '213\.207\.36\.0/25' rbl-testdatei
egrep '213\.207\.36\.0/24' rbl-testdatei
egrep '213\.207\.36\.0/23' rbl-testdatei
egrep '213\.207\.36\.0/22' rbl-testdatei
egrep '213\.207\.32\.0/21' rbl-testdatei
egrep '213\.207\.32\.0/20' rbl-testdatei
egrep '213\.207\.32\.0/19' rbl-testdatei
egrep '213\.207\.0\.0/18' rbl-testdatei
egrep '213\.207\.0\.0/17' rbl-testdatei
egrep '213\.207\.0\.0/16' rbl-testdatei
egrep '213\.206\.0\.0/15' rbl-testdatei
egrep '213\.204\.0\.0/14' rbl-testdatei
egrep '213\.200\.0\.0/13' rbl-testdatei
egrep '213\.192\.0\.0/12' rbl-testdatei

dewu@relay:~$ egrep '213\.207\.36\.0/22' rbl-testdatei
213.207.36.0/22
dewu@relay:~$
 
ich bin auf einem debain-basierendem System mit der Shell (möglicherweise auch die dash, ist leider nicht mein Server) unterwegs
da gibts 'n geheimen zaubertrick/hack um diese information herauszufinden: (ich nehme an du redest von /bin/sh..)
Code:
ls -l /bin/sh
... :/

wichtige sache ist: single quotes (') verhindern variablen-expansion seitens der shell (zumindest bei bash und sh..)
Code:
foo='inhalt'
echo $foo   # gibt aus: inhalt
echo "$foo" # gibt aus: inhalt
echo '$foo' # gibt aus: $foo
double-quotes tun dies nicht und sind in der tat zu empfehlen, weil sie interpretation des variablen-inhalt seitens der bash größtenteils unterbindet. (metazeichen wie '*' oder '?' werden nicht interpretiert.)
gewisse andere metazeichen werden dagegen schon noch interpretiert. zum beispiel das dollarsymbol, um variablen zu identifizieren. deswegen sind double-quotes idr eine gute idee. single-quotes nur, wenn man keinerlei bash interpretation im string haben will.
 
vielen Dank, so tut es.

Hier auch die Ausgabe von ls:

lrwxrwxrwx 1 root root 4 2007-01-03 11:24 /bin/sh -> bash
 

Ähnliche Themen

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Creative Labs SoundBlaster Audigy 2 ZS unter Debian / Kernel 3.16

Fedora 20 - Unlösbare Paket-Duplikat Konflikte

Rollei Mini Wifi Camcorder

skript zum löschen doppelter dateien

Zurück
Oben