Bash in Shell ok, Über Bash Aufgerufen error
Servus,
Ich habe grade ein SourceServer Start script für CS:GO etwas für mich angepasst,
Insbesondere habe ich SU geadded.
Nur leider bekomme ich ein Kleines Problem .
Wen ich das Script als "root" ausführe direkt in der Shell ist alles io es läuft durch und der der Server startet auch.
Wen ich dieses Script nun Aber aus einem Bash script heraus aufrufe erhalte ich einen Syntex fehler.
Ich kann mit nur leider Überhaupt nicht erklären wieso es da überhaupt zu unterschieden kommt.
Hier mal das start script.
Und über dieses Script wird es aufgerufen
Ich habe grade ein SourceServer Start script für CS:GO etwas für mich angepasst,
Insbesondere habe ich SU geadded.
Nur leider bekomme ich ein Kleines Problem .
Wen ich das Script als "root" ausführe direkt in der Shell ist alles io es läuft durch und der der Server startet auch.
root@steam:/home/steam/start-scripte# ./one-war.sh start
Start oneWAR-hl2
Wen ich dieses Script nun Aber aus einem Bash script heraus aufrufe erhalte ich einen Syntex fehler.
root@steam:/home/steam/start-scripte# /etc/init.d/HL2-MASTER
root@steam:/home/steam/start-scripte# one-war.sh: 16: one-war.sh: function: not found
one-war.sh: 45: one-war.sh: Syntax error: "}" unexpected
Ich kann mit nur leider Überhaupt nicht erklären wieso es da überhaupt zu unterschieden kommt.
Hier mal das start script.
#!/bin/bash
LOW_USER="steam"
DIR="/home/steam/games/hl2/one-war" # Absolute dir to the CS:S server
DEAMON="srcds_run" # Deamon to open; normaly not to change
IP="94.23.164.136" # IP of you server
PORT="27045" # Default port of the CS:S Server is 27015
PARAMS="-game hl2mp -ip $IP -port $PORT" # Deamon Parameters
PARAMS2="+map dm_lockdown +maxplayers 16 +tv_port 27046 +clientport 27047" # Deamon Parameters
SCREENNAME="oneWAR-hl2" # A unique name for the screen instance of the server
function init {
if [ -z "$DIR" ]; then
echo "Please fill out the DIR variable."
exit 0
fi
if [ -z "$DEAMON" ]; then
echo "Please fill out the DEAMON variable."
exit 0
fi
if [ -z "$PARAMS" ]; then
echo "Please fill out the PARAMS variable."
exit 0
fi
if [ -z "$PARAMS2" ]; then
echo "Please fill out the PARAMS2 variable."
exit 0
fi
if [ -z "$SCREENNAME" ]; then
echo "Please fill out the SCREENNAME variable."
exit 0
fi
if [ -z "$IP" ]; then
echo "Please fill out the IP variable."
exit 0
fi
if [ -z "$PORT" ]; then
echo "Please fill out the PORT variable."
exit 0
fi
}
function start_server {
if [[ `su - $LOW_USER -c "screen -ls | grep $SCREENNAME"` ]]; then
echo "The server runs already as screen instance $SCREENNAME"
else
echo "Start $SCREENNAME"
if [ -d "$DIR" ]; then
cd "$DIR"
su - $LOW_USER -c "screen -d -m -S $SCREENNAME $DIR/$DEAMON $PARAMS $PARAMS2"
else
echo "Please fill out the DIR variable"
fi
fi
}
function stop_server {
if [[ `screen -ls | grep $SCREENNAME` ]]; then
echo -n "Sop $SCREENNAME"
kill `screen -ls | grep $SCREENNAME | awk -F . '{print $1}'| awk '{print $1}'`
echo " ...done"
else
echo "Can not find the screen instance $SCREENNAME"
fi
}
function update_server {
echo "Ausgebaut Sry"
}
function wrong_input {
echo "Usage: $0 {start|stop|restart|update|console|check}"
exit 1
}
function get_screen {
screen -r $SCREENNAME
}
function check_ping {
if [ "`/usr/bin/quakestat -a2s $IP:$PORT | grep -v ADDRESS | awk '{ print $2 }' | awk -F/ ' { print $1}'`" = "DOWN" ]; then
sleep 10
if [ "`/usr/bin/quakestat -a2s $IP:$PORT | grep -v ADDRESS | awk '{ print $2 }' | awk -F/ ' { print $1}'`" = "DOWN" ]; then
stop_server
start_server
fi
fi
}
init
case "$1" in
start)
start_server
;;
stop)
stop_server
;;
restart)
stop_server
start_server
;;
update)
update_server
;;
console)
get_screen
;;
check)
check_ping
;;
*)
wrong_input
;;
esac
exit 0
Und über dieses Script wird es aufgerufen
#!/bin/bash
#sh enno001.sh start &
#sh jump.sh start &
sh /home/steam/start-scripte/one-war.sh start &
#sh rel-pms.sh start &
#sh zeibig-fun.sh start &
exit 1
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 225179
Url: https://administrator.de/contentid/225179
Ausgedruckt am: 05.11.2024 um 18:11 Uhr
2 Kommentare
Neuester Kommentar
Hi,
ganz sicher bin ich mir auch gerade nicht ABER
sh: function
bash: function
Demnach ist dein Script nach der Bash-Syntax geschrieben, du aber rufst es mit dem Shell-Interpreter auf, dieser wiederum kann nun in der Syntax keine Logik feststellen und wirft die entsprechende Fehlermeldung !
Ich würde dir vorschlagen dich in diesem Fall für einen gemeinsamen Interpreter zu entscheiden -> bash.
Dann musst du nur den Aufruf des Scriptes der Bash-Syntax nach anpassen.
~Arano
ganz sicher bin ich mir auch gerade nicht ABER
sh != bash
shell
und bash
sind zwei __unterschiedliche__ Interpreter !sh: function
bash: function
Demnach ist dein Script nach der Bash-Syntax geschrieben, du aber rufst es mit dem Shell-Interpreter auf, dieser wiederum kann nun in der Syntax keine Logik feststellen und wirft die entsprechende Fehlermeldung !
Ich würde dir vorschlagen dich in diesem Fall für einen gemeinsamen Interpreter zu entscheiden -> bash.
Dann musst du nur den Aufruf des Scriptes der Bash-Syntax nach anpassen.
~Arano