Sponsor-Board.de

Normale Version: Mittels .sh eine Variable in eine server.config schreiben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo alle zusammen,

Ich stehe vor dem Problem das ich mit Hilfe einer datei.sh eine Variable an eine server.config übergeben möchte. Der Wert soll dann ganz einfach nur ersetzt werden. Soweit klapt das auch, nur bekomme ich den Wert nicht in Anführungszeichen gesetzt.

Das habe ich soweit hinbekommen:

Code:
#!/bin/bash


while test $# -gt 0; do
case "$1" in
"-PLAYER")
    PLAYER="$2"
    shift ;;
esac
shift
done

grep   "maxPlayers" :  server.config &>/dev/null
if [[ $? -eq 0 ]]; then  # Vorhanden!
  sed -i server.config -e "s/^\(  "maxPlayers" : \).*$/\1${PLAYER},/"
else  # Nicht vorhanden!
  echo "  "maxPlayers" : ${PLAYER}," >> server.config
fi


Leider habe ich jetzt das Problem, das keine Anführungszeichen übergeben werden.
So müsste es aussehen: "maxPlayers" : 24000,
Und so schreibt das Script es hinein: maxPlayers : 26050,

Kann mir dabei vielleicht jemand helfen oder einen Tipp geben?

MfG Boedy

Hey, schonmal das probiert:
grep \"maxPlayers\"

Probiers mal aus,
Max.
beim sed und beim echo auch die beiden " escapen, denk dran dass die config ungültig wird wenn sie nicht mit \n endet und das echo ausgeführt wird.
Funktioniert leider nicht. Dann schreibt er garnichts in die server.config

MfG Boedy
Oh, ist das ne JSON-Datei? Dann würd ich eher ne Sprache nehmen, die JSON parsen kann.
Also müsste es dann so aussehen wenn ich das richtig verstehe.

Code:
#!/bin/bash


while test $# -gt 0; do
case "$1" in
"-PLAYER")
    PLAYER="$2"
    shift ;;
esac
shift
done

grep "maxPlayers" :  server.config &>/dev/null
if [[ $? -eq 0 ]]; then  # Vorhanden!
  sed -i server.config -e "s/^\(  \"maxPlayers\" : \).*$/\1${PLAYER},/"
else  # Nicht vorhanden!
  echo "  \"maxPlayers\" : ${PLAYER}," >> server.config
fi


Ja genau, ist eine JSON. OK, da bin ich dann aber wirklich mit meinem Latein am ende.

Simples beispiel:

PHP-Code:
#!/usr/bin/env php
<?php
if($argc == && $argv[1] == '-PLAYER'){
    
$conf json_decode(file_get_contents('server.config'), true);
    
$conf['maxPlayers'] = intval($argv[2]);
    
file_put_contents('server.config'json_encode($conf));


E: Shebang reineditiert

Hab es soweit am laufen.
Ich danke allen für die Hilfe.

Mfg Boedy
Referenz-URLs