| Autor | Nachricht | 
  
    |  | 
        
          |   | Titel: Shellscript Parameter abarbeiten  Verfasst am: 15.09.2006, 14:33 Uhr |  | 
  
    | 
        
          | 
 
 Anmeldung: 24. Aug 2005
 Beiträge: 144
 
 
 |  | 
        
          | Hallo! Ich suche eine Möglichkeit alle übergebenen Parameter in einer Schleife einzeln abzuarbeiten, und zwar von der Anzahl abhängig. Gibts da eine Möglichkeit? So ähnlich stelle ich mir das vor:
 
 
 Code: 
#!/bin/sh
 # Alle Übergebenen Parameter in einer Schleife einzeln abarbeiten
 
 # Anzahl der Parameter ausgeben
 echo "Anzahl der Parameter: ${#}"
 
 # Jeden Parameter einzeln ausgeben
 counter=1;
 pass=${#};
 while [ ${counter} -le ${pass} ] ; do
 echo ${${counter}};
 counter=`expr ${counter} + 1`;
 done
 
 exit 0;
 
 
 echo ${${counter}}; soll dabei den jeweiligen Parameter ausgeben. Allerdings kann man das so scheinbar nicht schreiben. Weiß jemand wie man das richtig schreiben kann?
 
 Gruß hum
 |  
          | 
 Zuletzt bearbeitet von humbold am 16.09.2006, 16:48 Uhr, insgesamt 2 Male bearbeitet
 |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
    |  | 
        
					| Titel: RE: Shellscript Parameter abarbeiten  Verfasst am: 15.09.2006, 14:42 Uhr |  | 
  
    | 
        
          | 
 
 Anmeldung: 20. Mai 2005
 Beiträge: 323
 Wohnort: Niedernberg
 
 |  | 
        
          | Probier mal: 
 Code: 
#!/bin/sh
 # Alle Übergebenen Parameter in einer Schleife einzeln abarbeiten
 
 # Anzahl der Parameter ausgeben
 echo "Anzahl der Parameter: ${#}"
 
 # Jeden Parameter einzeln ausgeben
 counter=1;
 
 
 pass=${#};
 
 while [ ${counter} -le ${pass} ] ; do
 echo ${counter};
 let "counter=${counter} + 1";
 done
 
 exit 0;
 
 |  
          |  |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
    |  | 
        
					| Titel:  Verfasst am: 15.09.2006, 14:47 Uhr |  | 
  
    | 
        
          | 
  
 Anmeldung: 05. Apr 2005
 Beiträge: 499
 Wohnort: Bielefeld <:-P
 
 |  | 
        
          | Oder so: Code: 
#!/bin/sh
Aufruf:# test.sh : Testskript Parameterauswertung
 
 counter=1
 
 while [ "$1" ]; do
 echo "$counter. $1"
 ((counter++))
 shift # nächsten Parameter nachschieben
 done
 Code: 
sh test.sh aber wieso muss das denn sein "leer  zeichen muss geqouted werden"
ergibt dann: Code: 
1. aber
bzw. ohne die schönere Bildschirmausgabe:2. wieso
 3. muss
 4. das
 5. denn
 6. sein
 7. leer  zeichen muss geqouted werden
 Code: 
#!/bin/sh
# test.sh : Testskript Parameterauswertung
 
 while [ "$1" ]; do
 echo "$1" # Mach was mit $1
 shift # nächsten Parameter nachschieben
 done
 mfg. Hack-o-Master
 |  
          | _________________
 sidux2007-02 64Bit, Kernel 2.6.23rc..(Crypto-root), X.org 7.3, KDE 3.5.7
 http://bernd-das-brot.de.be | Gästebuch ,  certified B.O.F.H.
 |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
    |  | 
        
					| Titel:  Verfasst am: 15.09.2006, 15:46 Uhr |  | 
  
    | 
        
          | 
 
 Anmeldung: 24. Aug 2005
 Beiträge: 144
 
 
 |  | 
        
          | @Boregard Das funktioniert leider nicht. echo ${counter} gibt nur den Wert von counter aus, aber nicht den Parameter Nr. counter. Aber den let kannte ich noch nicht.
 
 @Hack-o-Master
 Ja, genau sowas meinte ich! Allerdings sind die Parameter danach alle weggeshiftet. Also muss man die dann schon sichern wenn man sie später noch braucht. Leider weiß man das ja vorher nicht wieviele übergeben werden. Gibts da sowas wie arrays die zur Laufzeit erweitert werden können? Wüsste sonst nicht wie man das machen sollte, denn man weiß ja vorher nicht wieviele Parameter übergeben werden.
 Wäre schon gut zu wissen wie man das machen kann. Funtioniert für mein aktuelles Problem aber auch so.
 
 Besten Dank auf jeden Fall für die schnellen Antworten!
   
 Gruß hum
 |  
          |  |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
    |  | 
        
					| Titel:  Verfasst am: 15.09.2006, 16:22 Uhr |  | 
  
    | 
        
          | 
  
 Anmeldung: 05. Apr 2005
 Beiträge: 499
 Wohnort: Bielefeld <:-P
 
 |  | 
        
          | @humbold 
 Mit Speichern der Parameter im Array PARAM:
 Code: 
#!/bin/sh
mfg. Hack-o-Master# test4.sh : Testskript Parameterauswertung
 
 declare -a PARAM        # Array mit den einzelen gespeicherten Parametern
 
 echo "Originale Parameter:"
 counter=0
 while [ "$1" ]; do
 ((counter++))
 echo "$counter. $1"
 PARAM[$counter]="$1"  # Parameter abspeichern
 shift # nächsten Parameter nachschieben
 done
 maxparams=$counter
 
 # Gespeicherte Parameter ausgeben
 echo "Gespeicherte Parameter:"
 
 for counter in $(seq 1 $maxparams)
 do
 echo "$counter. ${PARAM[$counter]}"
 done
 |  
          | _________________
 sidux2007-02 64Bit, Kernel 2.6.23rc..(Crypto-root), X.org 7.3, KDE 3.5.7
 http://bernd-das-brot.de.be | Gästebuch ,  certified B.O.F.H.
 |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
    |  | 
        
          |   | Titel: arrays  Verfasst am: 16.09.2006, 16:46 Uhr |  | 
  
    | 
        
          | 
 
 Anmeldung: 24. Aug 2005
 Beiträge: 144
 
 
 |  |  | 
  
    |  | 
  
    |  | 
  
    |  | 
        
					| Titel:  Verfasst am: 18.09.2006, 17:56 Uhr |  | 
  
    | 
        
          | 
 
 Anmeldung: 24. Aug 2005
 Beiträge: 144
 
 
 |  | 
        
          | @Hack-o-Master Code grad erst weiter. Find Lösung mit dem "seq" in der for-Schleife is echt schön!
   
 Gruß hum
 |  
          |  |  
         
	        |  |  | 
  
    |  | 
  
    |  | 
  
  
    |  |