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

Shell et commandes GNU Discussion :

Problème d'arguments dans un script


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 40
    Par défaut Problème d'arguments dans un script
    Bonjour à tous.

    J'ai un problème d'arguments dans un script.
    ./touch_wakup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/sh
    /bin/touch -d $1 $2 2>&1
    Losrque je lance ce script, il ne me prend pas la date:
    ./touch_wakup "'09 Oct 2013 09:00'" test

    Me donne:
    /bin/touch: format de date invalide `\'09 Oct 2013 09:00\''

    Pourtant les arguments $1 et $2 me donnent bien ce que je veux.
    '09 Oct 2013 09:00'
    test


    Donc théoriquement, je devrais avoir l'exécution de : /bin/touch -d '09 Oct 2013 09:00' test ?

    Je ne vois pas ce qui pourrais clocher à par qu'il ne veuille pas prendre les cotes.

    Si quelqu'un a une idée.

    Ne pas tenir compte de l'utilité de ce script, il y a une raison pour que je le fasse ainsi.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Quotes doubles autour de ton 1er paramètre dans ton script : /bin/touch -d "$1" $2 2>&1, puis : ./touch_wakup '09 Oct 2013 09:00' test avec de simples quotes autour de la date

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 653
    Par défaut
    Citation Envoyé par zipe31
    avec de simples quotes autour de la date
    ou des doubles; c'est égal.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Sur quel système es-tu ? Quelle distribution ? Quel shell ?
    Que renvoient les commandes readlink -f /bin/sh et echo $0 ?

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 40
    Par défaut
    Oui, oups ok ça marche quand je le fais en mode console.

    Ce script est appelé depuis un code PHP.
    J'obtiens çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [root@maquette privileged]# ll /tmp/roomx_wakeup_101_*
    -rw-r--r-- 1 asterisk asterisk 189 oct.  7 16:32 /tmp/roomx_wakeup_101_10_Oct_2013_15_31.call
    On voit bien que la date n'est pas bonne.

    Le code PHP est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function touch_wakeup($at, $Temp_File )
        {
            $errMsg = '';
            $cmd = "/usr/bin/elastix-helper touch_wakeup ".$at." ".$Temp_File." 2>&1";
            $output = $ret = NULL;
            exec($cmd, $output, $ret);
            if ($ret != 0) {
                $errMsg = implode('', $output);
                return FALSE;
            }
            return TRUE;
        }
    L'appel de cette focntion est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        touch_wakeup($To, $file_name);
    $To est brut de pomme : 10 Oct 2013 09:00.

    A moins que je doive insérer les quottes ici!?

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Octobre 2012
    Messages : 40
    Par défaut
    C'est bon, ça fonctionne.

    Il fallait mettre les quottes dans le code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $To= "'".$date_time."'";
    Au lieu de:
    Merci tout le monde.

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

Discussions similaires

  1. problème de séparateurs dans un script sql
    Par foulla dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/06/2008, 12h43
  2. problème de séparateurs dans un script sql
    Par foulla dans le forum Langage SQL
    Réponses: 13
    Dernier message: 09/06/2008, 10h18
  3. Problème d'arguments dans l'appel de SqlPlus
    Par mut_ dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 04/07/2007, 09h42
  4. Réponses: 7
    Dernier message: 25/06/2007, 22h34
  5. [MySQL] Problème de pagination dans un script.
    Par Scurz dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/08/2006, 12h47

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