Inhalt einer Variable als Programmaufruf starten

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Mtgxyz, 05.04.2012.

  1. Mtgxyz

    Mtgxyz Grünschnabel

    Dabei seit:
    05.04.2012
    Beiträge:
    4
    Zustimmungen:
    0
    Also, ich möchte gerne ein Shell-Script schreiben, das je nach Usereingabe ein Anderes Shell-Script (bzw. Programm) aufruft und dann den Return-Code kommentiert. (So können besser Fehler gefunden Werden)
    Mein Code:
    Code:
    	echo "Jetzt wird $1 aufgerufen."
    	echo "Wieviele Parameter?"
    	read para
    	$count = 0
    	$appa = $1
    	while $count - le $para
    	do
    		$count = $count+1
    		echo "Parameter $count:"
    		read buff
    		$appa .= " $buff"
    	done
    #CODE für Programmaufruf
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Spröde, 06.04.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Und was ist die Frage? Für welche Shell soll der Code sein?

    Verstehe ich das richtig? Du willst ein Shell-Script, dass die Fehler von anderen Shellscripten auswertet und Du glaubst ernsthaft, dass die Fehler so besser gefunden werden können?

    Ich bin zutiefst verwirrt.
     
  4. #3 Mtgxyz, 06.04.2012
    Zuletzt bearbeitet: 06.04.2012
    Mtgxyz

    Mtgxyz Grünschnabel

    Dabei seit:
    05.04.2012
    Beiträge:
    4
    Zustimmungen:
    0
    Bash
    nicht die Fehler Anderer Programme, sondern den Exitcode (Also wenn es einen Fehler Gibt, dann z.B. Exitcode 2). So gibt es keine Kryptischen Fehlerbeschreibungen die u.u keiner lesen kann.
     
  5. #4 Spröde, 06.04.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Meinst Du nicht auch, dass es haarsträubend umständlich ist, den Benutzer zuerst nach der Anzahl der Parameter zu fragen, um danach jeden Parameter einzeln abzufragen? Wäre das Folgende nicht um Quadratklassen einfacher?
    Code:
    #!/bin/bash
    echo "Aufgerufen wird: $@"
    $@
    echo "Der Returncode war: $?"
    

    Zwei Tests damit (test.sh):
    Code:
    sproede@linux:~> test.sh echo 1 2 3
    Aufgerufen wird: echo 1 2 3
    1 2 3
    Der Returncode war: 0
    
    sproede@linux:~> test.sh cat gibsgaanich
    Aufgerufen wird: cat gibsgaanich
    cat: gibsgaanich: Datei oder Verzeichnis nicht gefunden
    Der Returncode war: 1
    
     
  6. ija

    ija Grünschnabel

    Dabei seit:
    13.04.2012
    Beiträge:
    4
    Zustimmungen:
    0
    hallo kann mir vielleicht einer Helfen
    Und zwar muss ich 5 IP-Adressen druch ping testen, ob diese erreichbar sind. Und noch was mit shift machen.
    nun habe ich schon was fertig gestellt, jedoch funktioniert es nicht so wie gewünscht.
    #! /usr/bin/sh

    IP1="139.6.57.1"
    IP2="139.6.57.8"
    IP3="139.6.57.11"
    IP4="139.6.57.63"
    IP5="139.6.57.66"


    echo Ping-Test beginnt...
    echo

    for online in $IP1 $IP2 $IP3 $IP4 $IP5;
    do
    ping -c1 $online;

    if [$? != 0]

    then
    echo"$online ist offlineline: $online"
    else
    echo "$online ist online : $online"

    fi
    done

    echo
    echo ...und ist abgeschlossen!
     
  7. nighT

    nighT Guest

    Hallo.
    Bitte versuche später, Code in Code-Tags zu posten. Das dient der Übersicht!
    Ich würde behaupten, du hast in der if-Abfrage die Leerzeilen zwischen Klammern und Variablen/Werten vergessen.
    Code:
    #!/bin/sh
    
    IP1="google.de"
    IP2="gmx.de"
    IP3="unixboard.de"
    IP4="testefwefv.de"
    IP5="cia.gov"
    
    
    echo Ping-Test beginnt...
    echo
    
    for online in $IP1 $IP2 $IP3 $IP4 $IP5; do
            ping -w1 -c1 $online >nul 2>&1;
    
            if [ $? != 0 ]; then
                    echo "$online ist offline"
            else
                    echo "$online ist online"
            fi
    
    done
    
    echo
    echo ...und ist abgeschlossen!
    
    Code:
    test@oglxvmtest01:~$ ./test.sh 
    Ping-Test beginnt...                                                                                       
                                                                                                               
    google.de ist online                                                                                       
    gmx.de ist online                                                                                          
    unixboard.de ist online                                                                                    
    testefwefv.de ist offline                                                                                  
    cia.gov ist offline                                                                                        
                                                                                                               
    ...und ist abgeschlossen!                                                                                  
    test@oglxvmtest01:~$
    
    Desweiteren habe ich eine Wait für den Ping von einer Sekunde eingebaut und die Ausgabe von Ping in nul umgeleitetet, damit die Ausgabe übersichtlich bleibt.
     
  8. ija

    ija Grünschnabel

    Dabei seit:
    13.04.2012
    Beiträge:
    4
    Zustimmungen:
    0
    Vielen, vielen Dank für deine Lösung/Antwort,
    das super nett von dir.
    Funktioniert alles! :)
    Noch eine Frage wo baue ich, den ein shift ein, brauch ich das überhaupt??
    Ist in der Aufgabenstellung vorgegeben.
     
  9. #8 Spröde, 15.04.2012
    Spröde

    Spröde Alter Sack

    Dabei seit:
    22.01.2012
    Beiträge:
    173
    Zustimmungen:
    0
    Die Sache mit "shift" lässt eine andere Aufgabenstellung vermuten. Du sollst dem Script vermutlich beim Aufruf die IPs als Parameter mitgeben.

    Die Sache mit ping ist gelöst, also poste ich Dir nur noch, wie Du die Parameter mit Hilfe von "shift" abarbeiten lässt und Du ersetzt das "echo" im Code entsprechend.

    Code:
    #!/bin/sh
    while [ "$1" ]; do
        echo "$1"
        shift
    done
    

    Der Script wird dann also so aufgerufen:
    Code:
    sproede@linux:~> SCRIPT a b c d e
    a
    b
    c
    d
    e
    
     
  10. #9 ija, 16.04.2012
    Zuletzt bearbeitet: 16.04.2012
    ija

    ija Grünschnabel

    Dabei seit:
    13.04.2012
    Beiträge:
    4
    Zustimmungen:
    0
    Hi!

    Danke schon mal für deine Hilfe, aber die genaue Aufgabenbeschreibung lautet:
    Schreiben sie ein Shell Script, das aus einer Liste an Variablen mit IP-Adressen in einer
    Schleife den Online-Status der Gegenstelle prüft.

    Jetzt habe ich die Aufgabe gelöst"wie es oben steht", jedoch ohne shift.
     
  11. nighT

    nighT Guest

    So langsam komme ich mir ein bisschen ver**** vor...
    Ich denke, du solltest nun genug Input bekommen haben, damit du dein Script auch selbst schreiben kannst.

    Falls nicht, dann solltest du dir z.B. das oder das anschauen.


    Sorry für meinen Ton, aber ich denke, ein Forum ist da, um Probleme zu lösen und nicht alle gestellten Aufgaben anderer Leute zu lösen.
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. ija

    ija Grünschnabel

    Dabei seit:
    13.04.2012
    Beiträge:
    4
    Zustimmungen:
    0
    Ich habe die Aufgabe selber gelöst, so ist es nicht.
    Wollte nur wissen, wie man diese mit shift löst.
    Was shift macht und der Hinweis, ist mir auch klar,
    jedoch weiß ich nicht wie ich die Parameter darein kriege..
    Krieg ich auch allein irgendwie allein hin...
     
  14. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.054
    Zustimmungen:
    8
    Dann solltest Du evtl. #8 nochmals genauer lesen und zu verstehen versuchen.
     
Thema:

Inhalt einer Variable als Programmaufruf starten

Die Seite wird geladen...

Inhalt einer Variable als Programmaufruf starten - Ähnliche Themen

  1. Timestamp an Inhalt einer Textdatei anfügen

    Timestamp an Inhalt einer Textdatei anfügen: Hallo, ich als neuer, unerfahrener Nutzer von Linux und der bash hätte folgende Frage. Und zwar würde ich gerne mit einem command den Zeitstempel...
  2. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  3. Inhalt einer Variablen aus Batch an Shellscript übergeben

    Inhalt einer Variablen aus Batch an Shellscript übergeben: Hallo, ich komme einfach nicht drauf. Wie kann ich den Wert aus einer Variablen eines Batches an mein Shellscript übergeben? So? #...
  4. Platzhalter in Textdatei durch den Inhalt einer anderen Datei ersetzen

    Platzhalter in Textdatei durch den Inhalt einer anderen Datei ersetzen: Hallo, gibt es ein Kommando, mit dem ich einen Platzhalter in einer Textdatei durch den kompletten Inhalt einer anderen Textdatei ersetzen kann?...
  5. awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

    awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung: Hallo Ich habe folgendes Problem: Anhand dem Ergebnis einer Datenbankabfrage habe ich mir mit sed usw. einen String gebastelt und in einer Datei...