Neue ausführbare Datei mit Datensätzen aus einer Datei und Variablen erstellen

Das ist ja das Problem.. er gibt bei echo $VAR das selbe aus, was er bei sh $VAR ausgiebt.
Wenn man diese Datei ohne Parameter startet, gibt er aus "Usage: (start | stop | status ) [.........]"
Bei beiden Befehlen gibt er den selben Fehler aus:

"Unknown Command: Usage:"

Also scheint er die Datei auszuführen. Die Datei liefert aber die Rückmeldung, dass kein Parameter überliefert wurde.
Und er versucht diese Fehlermeldung als Befehl zu interpretieren.
ich hab aber kP warum....
Wie gesagt, wenn man den Pfad so angibt dann gehts.

MfG
 
Ich glaube die Lösung heißt 'export'.

Mit dem sh startest du eine neue shell.
Die Variable wird aber nur mit in das neue Environment übernommen, wenn sir exportiert ist.

Also vorher ein
Code:
export VAR=wert

(oder ich verstehe die Problematik nicht. ;-))
 
Zuletzt bearbeitet:
Bei beiden Befehlen gibt er den selben Fehler aus:

"Unknown Command: Usage:"

Also scheint er die Datei auszuführen.

So wie es aussieht, hast du einen Fehler bei der Deklaration der Variablen gemacht. Poste doch mal die Zeile, wo du die Variable mit dem Wert belegst.

@NoXqs: Nein, export ist soweit ich das sehe in diesem Fall nicht nötig, da das Environment das gleiche ist.

Gruß,
Philip
 
sorry, dass ich erst so spät antworte.. War ein paar Tage weg.

Hier der Code:

Code:
    case "$AUSWAHL" in
        1)
        clear
        if test -r $SERVERCONTROL
        then
                echo "Bitte geben Sie den User ein, von dem Sie den Server ueberpruefen moechten."
                read USER
                echo ""
                echo ""
                echo "`grep -c $USER $SERVERCONTROL` Eintraege vorhanden."
                echo ""
                echo "`grep $USER $SERVERCONTROL`"
                CS16=$(`grep "${USER}/hlds" $SERVERCONTROL`)
                CSCZ=$(`grep "${USER}/hlds_cz" $SERVERCONTROL`)
                CSS=$(`grep "${USER}/hlds_s" $SERVERCONTROL`)
                echo ""
                echo ""
                echo $CS16 # funktioniert genauso wenig..
                echo "\$CS16" # funktioniert auch nicht..
                $CS16 status # Funktioniert nicht?!..
# Hab ich erstmal ausgetickt.. wäre die Lösung die derzeit funktioniert ( unterhalb..)
                #${HOME}${USER}/./hlds_cz status
                #${HOME}${USER}/./hlds_s status
                echo ""
                echo ""
                echo "Bitte waehlen Sie das Spiel (CS 1.6 [1] | CS : CZ [2] | CS : S [3])"
                read GAME
                if [ "$GAME" == "1" ]
                then
                        :
                fi
        else
                echo "$SERVERCONTROL entweder nicht vorhanden oder nicht lesbar (CHMOD ueberpruefen)."
        fi
        menu
        ;;

mal sehen obn ihr mir helfen könnt...
 
Code:
                echo "`grep -c $USER $SERVERCONTROL` Eintraege vorhanden."
                echo ""
                echo "`grep $USER $SERVERCONTROL`"
                CS16=$(`grep "${USER}/hlds" $SERVERCONTROL`)
                CSCZ=$(`grep "${USER}/hlds_cz" $SERVERCONTROL`)
                CSS=$(`grep "${USER}/hlds_s" $SERVERCONTROL`)
                echo ""
                echo ""
                echo $CS16 # funktioniert genauso wenig..
                echo "\$CS16" # funktioniert auch nicht..
                $CS16 status # Funktioniert nicht?!..

mal sehen obn ihr mir helfen könnt...

Na klar :) ! Wie ich mir gedacht habe ist die Zuweisung der Variable falsch. Du verwendest bei der Deklaration von CS16 die Command Substitution. Die kann (wie bei den beiden echo-Zeilen am Anfang) durch sogenannten Backticks (``) oder das Bash-Konstrukt $() erfolgen. Er reicht also eines der beiden Konstrukte einzusetzen. Solange du mit der bash arbeitest solltest du $() benutzen. Wenn das Skript aber auch unter einer anderen Shell laufen soll, mußt du die Backticks verwenden.

Allerdings ist die Command Substitution hier fehl am Platze. Dadurch wird ja das Kommando direkt ausgeführt und die Ausgabe des Kommandos in der Variablen (bei dir CS16) gespeichert. Was du willst ist, dass die Variable den Befehl speichert und du im weiteren Verlauf des Skriptes nur noch die Variable angeben musst, um den Befehl auszuführen. Dazu genügt eine einfach Zuweisung, am besten mit Anführungszeichen ("") für den Fall das der Befehl Leerzeichen enthält.

Dazu ein kleines Beispiel:
Code:
LS="ls -al"
$LS # führt das Kommando "ls -al" aus
$LS -h # führt das Kommando "ls -al -h" aus
OUTPUT=$($LS) # führt das Kommando "ls -al" aus
              # und speichert die Ausgabe in OUTPUT

Gruß,
Philip
 
Danke, werde das sobald wie möglich ausprobieren..
Aber habe derzeit ein größeres Problem - ich weiß dass es nicht hierher gehört, aber vielleciht ists ja schnell gelöst und ich will nciht woanders hin posten.. aber sagt ruhig, wenn ich das soll, oder das besser ist -
Ich habe ein Anwendungsstartscript, das via su - $USER -c $BEFEHL eine Anwendung ausführt, damit diese nicht unter root läuft.

Verwende ich jetzt also als root ./hlds start funktioniert alles.. Die Anwendung wird über $USER gestartet.
Was vorher ging, aber seit heut enich tmehr:
Einloggen als $USER
Mit $USER ./hlds start eingeben.. Folgendes Passiert:

Code:
$USER@$SERVER:~> ./hlds start
Starte $ANWENDUNG von $USER: $NAME
Passwort: $USERPW
su: ungültiges Kennwort
Passwort: $USERPW
#... und so weiter ... Er akzeptiert das Passwort nicht#
Aber bei der Funktion "status":

Code:
$USER@$SERVER:~> ./hlds status
Passwort: $USERPW # Hier akzeptiert er das Passwort aber plötzlich!?
$ANWENDUNG $NAME von $USER läuft! # oder läuft nicht... je nach dem

Vorher hatte ich aber gar keine Abfrage.. am Script hab ich gar nichts verändert, habe nur etwas mit sudo rumgespielt.. Hatte auch nie eine sudo group erstellt.. lief alles so.. habe sudo auch schonmal neuinstalliert..

Die Statusfunktion ist in einigen beiträgen vorher, wenn sie gebracuht werden sollte..

Ich habe keine Ahnung warum, und was schlimmer ist, ich habe keine Ahnung WIE ich das wieder wegkriege.. vielen dank für eure Hilfe..

HILFE!!!

Ist jetzt im anderen Unterforum gepostet. Siehe: http://www.unixboard.de/vb3/showthread.php?p=258452
Falls jemand helfen möchte, bitte dort posten. Vielen Dank!
 
Zuletzt bearbeitet:

Ähnliche Themen

Queue für copy Script

Doppelte Dateien löschen.

Variablen aus Config-Datei auslesen

Zeilenweise auslesen und in Variable speichern / übergeben

Hardlink von Dateien erstellen, Pfadangabe aus TXT

Zurück
Oben