• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Startschwierigkeiten

Hallo.
Wie kann ich eine Prozedur schreiben, die als ersten Parameter ein vollständiges Kommando, d.h. Kommandoname plus erforderliche Parameter, erwartet und das Kommando ausführt.
Oder eine Prozedur die nicht, wie bei der ersten Überleung, als Parameter ein Kommando erwartet, sondern alle angegebenen Parameter verwendet?

Kann mir jemand einen Lösungsvorschlag machen?

Thanks
 
hagbard-celine schrieb:
Kann mir jemand einen Lösungsvorschlag machen?

kann mir jemand eine Übersetzung dieser Frage machen?

(ich weiß nicht, was unser Hacker-Freund hier von mir will...)

Stichworte: welche Sprache, was für ein Problem, ...
 
Shellprogrammierung unter Linux SUSE.
Das Script sollte ungefähr so aussehen:
#! /bin/sh
echo "Prozedurname = $0"
echo "1. Parameter: $1
`$1`"
echo "2. Parameter: $2
`$2`"
echo "3. Parameter: $3
`$3`"
echo "4. Parameter: $4
`$4`"
echo "Anzahl übergebener Parameter: $#"
Nur kommt mir das verfasste etwas uneffizient vor - evtl. andere Lösung - z.B. das man x beliebig viele Parameter angeben kann.
 
ja mit shift, also
Code:
#!/bin/sh

echo "Script: $0"

while [ -n "$1" ]
do
  echo "Parameter: $1"
  shift
done

ansonsten solltest Du dir getopts mal ansehen.
 
A

Anonymous

Gast
Nur kommt mir das verfasste etwas uneffizient vor - evtl. andere Lösung - z.B. das man x beliebig viele Parameter angeben kann.
Grundsätzlich unterstützt die Bourne-Shell bis zu neun Parameter ($1 - $9), die direkt angesprochen werden können. Die Bourne-Again-Shell (bash) kann bis zu 99 Parameter direkt ansprechen, indem die Nummern der Parameter oberhalb des neunten in geschweifte Klammern gesetzt werden (${10} - ${99}).

Das sollte wohl erst mal für den Anfang reichen jedenfalls kann man sich mehr feste Parameter sowieso nicht merken, ansonsten kannst du die Parameter ja jederzeit mit $* oder $@ alle ansprechen und gezielt darin suchen oder mit shift [n] die ganze Liste verschieben. ZB immer nur $1 auswerten und dann shift und wieder $1 ausweten und das genau $# mal.
PS: das hat ja TeXpert mittlerweile schon geschrieben
robi
 
Eine While-Schleife mit Shift ist eine gute lösung. Danke!
Nur werden die Parameter auf die Standardausgabe geschrieben. Wie kann ich aber ein Script schreiben das die Parameter auf die Standardausgabe schreibt und auch auswertet? Ganz trivial z.B.:
Code:
Parameter1: ls
file
file
directory
...
Parameter2: date
2005-05-29
Parameter3: irgendwas
irgendwas
 
Gibt es eine Seite mit Beispiel-Scripts zu Shellprogrammierung? Nutze z.Z. die Seite selflinux.org. Finde aber, das es zu wenig Beispiele gibt - obwohl ich die Seite sehr gut finde.
Denke, dass so etwas am Anfang ganz hilfreich ist, um erst mal zu sehen, wie das theoretisch gelesene eingesetzt werden kann.
 
Code:
#!/bin/sh

echo "Script: $0"

while [ -n "$1" ]
do
  echo "PArameter: $1"
  eval $1
  echo "-------------"
  shift
done
 
guck mal hier:

http://www.tldp.org/guides.html

dort den "Bash guide for beginners" oder dann den "Advanced Bash Scripting Guide"
 
Oben