IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Petit scrtip bash qui ne marche pas..


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Points : 61
    Points
    61
    Par défaut Petit scrtip bash qui ne marche pas..
    Bonjour,
    Voici mon script ci-dessous...
    Il ne marche pas et je comprend pas pourquoi.. selon la doc que j'ai sous les yeux ca devrait etre bon ?!?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #!/bin/bash
    CSS=`ps -ax | grep scrcds_run | grep -v grep`
    CS16=`ps -ax | grep hlds_run | grep -v grep`
     
    if [ $CS16 ]
    then
    echo "Serveur tourne deja CS 1.6"
    else
    echo "Chargement de CounterStrike (CS1.6)"
    su -c "(cd /home/cs/hlds_l/cs16 && /home/cs/hlds_l/hlds_run -console -game cstrike -secure -port 27016 +maxplayers 22 +map cs_office -autoupdate)" cs &
    fi
     
    if [ $CSS ]
    then
    echo "Serveur tourne deja CS:S"
    else
    echo "Chargement Counter Strike SOURCE"
    su -c "(cd /home/cs/hlds_l/css && /home/cs/hlds_l/css/srcds_run -console -game cstrike -port 27015 +map de_dust -maxplayers 36 -autoupdate)" cs &
    fi
    J'aimerais qu'il check si mon process exist, si oui il ne fait rien, sinon il le charge.
    Merci de votre aide.

    Quand je l'execute j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.3/FAQ 
     
    ./server_start: line 9: [: too many arguments
    Et il start le serveur qu'il tourne deja ou pas....
    J'ai testé mon ps en ligne de cmd, et il marche..
    et la ligne 9 correspon au 1er if.
    : :

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    le test d'une variable a vide n'est pas correcte ....
    if [ $toto ] donne si toto est vide if [ ] ---> pas bon
    donc if [[ $toto = "" ]] ou if [[ $toto != "" ]
    il existe aussi la syntaxe
    if [ -z $toto ] ou if [[ -z $toto ]] -z pour longueur de chaine à 0 (donc chaine vide)
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    Si je fais ca:
    if [[ -z $CS16 ]]
    ou
    if [ -z $CS16 ]

    ca ne marche pas...
    J'avais deja tenté..
    par contre si je fais
    [[ $CSS != "" ]]
    cette syntaxe la fonctionne...
    je comprends pas..
    peut tu aussi m'expliquer la difference entre utiliser une fois les [] et deux fois ? [[]] ?

    Merci.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    le [ ou [[ est plus lié à l'évolution de la syntaxe du shell ... au tout debut
    if test ......
    ensuite
    if [ .... ]
    encore ensuite
    if [[ ..... ]]

    donc [[ ... ]] ainsainsi que (( .... )) sont plus "moderne" et corresponde au shell POSIX

    l'avantage de [[ ]] sur [ ] et surtout lors de condition booleenne :
    if ( [ $toto ="xxx" ] && [ $tata = "ddd" ] ) || [ ... ]
    then
    .....
    if [[ ( $toto = "ddd" && $tata = "ddd" ) || ..... ]]
    then

    donne une lecture plus "classique" et plus lisible , l'ensemble de l'expression est entre [[ ....
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 98
    Points : 61
    Points
    61
    Par défaut
    mmmh.
    merci pour cette explication.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Petit essai qui ne marche pas
    Par codeur71 dans le forum AJAX
    Réponses: 9
    Dernier message: 25/02/2012, 10h15
  2. [SWING] KeyListener qui ne marche pas
    Par kindool dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 10/01/2005, 19h04
  3. Iptables configuration qui ne marche pas....
    Par The_Nail dans le forum Sécurité
    Réponses: 7
    Dernier message: 03/02/2004, 14h27
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo