Skript problem (Anfänger)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Crunch
Beiträge: 2
Registriert: 21.01.2013 18:08:44

Skript problem (Anfänger)

Beitrag von Crunch » 21.01.2013 18:10:24

Hallo,

ich würde gerne wissen wo hier mein fehler liegt, vorweg ich arbeite noch nicht lange mit bash und bin somit noch ein richtiger neuling

so sieht mein skript zz. aus:

Code: Alles auswählen

VAR_A=$1
VAR_B=$3
VAR_C=$4

SETTINGA=`echo "$VAR_C" | awk 'BEGIN{FS="_"}{print $1}'`
SETTINGB=`echo "$VAR_C" | awk 'BEGIN{FS="_"}{print $2}'`
SETTINGC=`echo "$VAR_C" | awk 'BEGIN{FS="_"}{print $3}'`
SETTINGD=`echo "$VAR_C" | awk 'BEGIN{FS="_"}{print $4}'`

# Startscript: gsport_gsip_gsmod_gsplayer
# SETTINGA = Port
# SETTINGB = IP
# SETTINGC = MOD
# SETTINGD = Player

cd /home/$VAR_A/server/$VAR_B/UserData/Config

sed -e '/<max_players>/Ic\<max_players>'$SETTINGD'</max_players>'
mv dedicated_cfg.txt backup.txt
sed -e '/<server_port>/Ic\<server_port>'$SETTINGA'</server_port>'
mv backup.txt dedicated_cfg.txt
sed -e '/<force_ip_address>/Ic\<force_ip_address>'$SETTINGB'</force_ip_address>'
mv dedicated_cfg.txt backup.txt
rm dedicated_cfg.txt
mv backup.txt dedicated_cfg.txt

cd /home/$VAR_A/server/$VAR_B

./ManiaPlanetServer /game_settings=MatchSettings/SMStormBattle.txt /dedicated_cfg=dedicated_cfg.txt
echo "$SETTINGB $SETTINGA" > mania.pid
#pida=$!
#let pidb=$pida+1
#echo "$pidb" > mania.pid

exit 0
wenn ich dieses skript nun ausführe erhalte ich folgende fehlermeldung:
./start: line 26: cd: /home//server//UserData/Config: No such file or directory

ich weis einfach nicht wie ich dem skript zuweise das er die erstellten ordner zischen /home/ORDNER/server und /server/ORDNER/UserData ausliest und mit einbindet.

Selbst kann ich diese ordner leider nicht im skript mit anbinden, da sich diese ordner wenn ich einen neuen benutzer erstelle natürlich namentlich ändern.
Zuletzt geändert von Meillo am 23.01.2013 18:50:30, insgesamt 1-mal geändert.
Grund: code-Tags hinzugefuegt

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Skript problem (Anfänger)

Beitrag von Cae » 21.01.2013 18:25:15

Sorry, aber ich blicke da nicht durch:
  • Wo ist Zeile 26?
  • Mit welchen Parametern wird das Skript aufgerufen?
  • Wofuer benennst du die eine Datei lustig um?
  • Wohin geht der sed-Output, welchen Input bekommt es ueberhaupt? Zur Zeit wohl keinen, und resultierender Output landet nicht in dedicated_cfg.txt oder sonstwo, sondern auf stdout.
  • Bitte verwende sprechende Variablennamen. Wofuer steht $VAR_A?! Wohl offensichtlich fuer einen Port, da kann man sie auch gleich $PORT nennen und blickt das auch zwei Zeilen spaeter noch.
  • Warum versuchst du unten (nagut, auskommentiert), eine PID zu inkrementieren? (Die Zeile wird sowieso nicht erreicht, sofern "ManiaPlanetServer" nicht forkt.)
Zum guten Schluss noch, was soll das Teil machen?

Willkommen im Forum!

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Crunch
Beiträge: 2
Registriert: 21.01.2013 18:08:44

Re: Skript problem (Anfänger)

Beitrag von Crunch » 21.01.2013 19:35:13

hallo,

danke für die schnelle antwort!

Zeile 26 ist: cd /home/$VAR_A/....

Das Skript wird mit ./start ausgeführt

Mit sed hätte ich mir gedacht inhalte in der dedicated_cfg.txt zu ändern und diese dann in backup.txt umzuschreiben, wieder zu ändern und erneuert umzuschreiben, deshalb habe ich die datei umbenannt

Mit $VAR_A hätte ich es eigentlich versucht verzeichnisse welche von einem anderen skript automatisch erstellt und verschiedene bezeichnungen haben einzubinden ,nur funktioniert es nicht und darum führt mir das skript auch den fehler auf directory not found, weil ich es nicht schaffe die verzeichnisse über diese variable einzubinden


Das Teil soll eigentlich nur dazu dienen über ein bereits vorhandes Webinterface Port, IP und Slotanzahl eines Servers zu zu ordnen und diesen dann mit den zugewiesenen informationen zu starten

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Skript problem (Anfänger)

Beitrag von Cae » 21.01.2013 20:32:53

Ja, du Scherzkeks, du hast diesen Zeilenanfang zwei Mal verwendet. Es ist schon klar, dass die Meldung von irgendeinem cd kommt.

Das funktioniert so keinesfalls, wie du dir es vorstellst. Mir ist's jetzt aber auch zu doof, das einzel zu erklaeren; z.B.
Crunch hat geschrieben:Das Skript wird mit ./start ausgeführt
kann nicht sein, weil du hinterher $1... auswertest. Also ist's sinnvollerweise ./start foo ....

Egal. Hier ist ein Skript, was das macht, was du zu erreichen versuchst: NoPaste-Eintrag36946 (Selbstverstaendlich habe ich das nicht getestet). Vergleiche es mit deiner Version und erkenne, woran deine Fehler liegen.

Wenn dir langweilig ist, kannst du noch das kill automatisieren und ein echtes start-stop-Skript draus bauen.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten