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 :

Syntax error: "(" unexpected (expecting "}")


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Par défaut Syntax error: "(" unexpected (expecting "}")
    Bonjour à tous,

    Je bloc sur une ligne dans un fichier bash,

    En clair j'ai un petit script qui marche très bien et que je veux améliorer un peu , et il me fait l'erreur ci dessus des que je rajoute cette simple ligne:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num=$[($RANDOM % ($[6-1]+1))+100]
    ligne de code que j 'ai trouvé ici

    En fait je veux qu'il me génère un chiffre au hasard entre 1 et 6 (pour le moment) et que j'utiliserai un peu plus loin dans le script.

    Pouvez vous m'expliquer ?

    voici le debut du script si ca peu aider
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #!/bin/sh
     
    USER=$('whoami')
    #echo utilisateur :$USER
     
    IP_SE3="192.168.58.200"
     
    user="admin"
    password="*********"
    partage="docspartages"
    fichier="diaporama_accueil."
    chemin="/administratif/diaporama_accueil/"
     
     
    # on test les différentes extentions possible
     
    _test_extention="pps ppt pptx ppsx odp" ;
     
    checkextention () {
     
            for extention in ${_test_extention} ; do
                    echo -n "cherche pour \"$extention\" ... " ;
            RECHERCHE=$(smbclient //$IP_SE3/$partage -U $user%$password -c 'ls '$chemin''$fichier''$extention''| cut -f 1 | awk '{print $1}' )
     
                    if  [ "$RECHERCHE" != "NT_STATUS_NO_SUCH_FILE" ]
                    then
     
    ext=$extention
    else
     
    echo "Le fichier n'existe pas!";
     
    fi
     
                  done
     
     
    }
     
    imagealeatoire () {
     
    num=$[('$RANDOM' % ($[6-1]+1))+100]
    }
     
    imagealeatoire


    merci à tous

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    les lignes ne sont pas identiques : dans le script, la variable RANDOM (qui n'est pas POSIX, et qui donc ne fonctionnera pas avec /bin/sh, si ce fichier n'est pas un lien vers bash) est entre apostrophes, ce qui a pour effet d'inhiber son développement.

    NB : cette forme d'évaluation arithmétique est datée.
    de nos jours, on utilise des parenthèses doubles :
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Par défaut
    ok merci , oui les lignes ne sont pas identique je faisait des essais à taton pour trouvé une solution.

    merci pour l'info, en fait je me suis mis en bash et non en sh et ça marche.

    bon mmaintenant j'ai une autre erreur plus bas lors du test sur la date du fichier lors de la

    definition de la variable VERSION_NEW (ligne 79)

    il me retourne lors de l echo de debug en dessous : version new: failed(ErrorNT_STATUS_UNSUCCESSFUL) (ligne 80)

    or si je tape la commande direct sous shell ca marche bien donc je suppose erreur de syntax quelque part mais je seche.

    est-ce la même erreur ???? je ne peux pas tester ce week end . je verrai ça lundi.

    doit-je l'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VERSION_NEW=$((smbclient //$IP_SE3/$partage -U $user%$password -c 'ls '$chemin''$fichier''$ext''  | cut -f 1 | awk '{print $4 $5 $6 $7 $8}'))
    Merci encore
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    #!/bin/bash
     
    USER=$('whoami')
    #echo utilisateur :$USER
     
    IP_SE3="10.37.58.200"
     
    user="admin"
    password="0371124w"
    partage="docspartages"
    fichier="diaporama_accueil."
    chemin="/administratif/diaporama_accueil/"
     
     
    # on test les différentes extentions possible
     
    _test_extention="pps ppt pptx ppsx odp" ;
     
    checkextention () {
     
            for extention in ${_test_extention} ; do
                    echo -n "cherche pour \"$extention\" ... " ;
            RECHERCHE=$(smbclient //$IP_SE3/$partage -U $user%$password -c 'ls '$chemin''$fichier''$extention''| cut -f 1 | awk '{print $1}' )
     
                    if  [ "$RECHERCHE" != "NT_STATUS_NO_SUCH_FILE" ]
                    then
     
    ext=$extention
    else
     
    echo "Le fichier n'existe pas!";
     
    fi
     
                  done
     
     
    }
     
    imagealeatoire () {
    min=1
    max=6
    number=$[($RANDOM % ($[$max - $min] + 1)) + $min]
    #echo $number
    }
     
    #imagealeatoire
     
    # Pour le débugguage : fichiers de log journalier (les raspi redémarrant chaque jour)
    # exec 1> "/home/$USER/sorties.log" 2> "/home/$USER/erreurs.log"
     
    # Pour éviter que l'écran ne s'éteigne au bout d'un certain temps      
    xset s off        
    xset -dpms
     
     
    # On affiche l'image d'arrière fond pour "masquer" le bureau LXDE de Raspbian.
    changefeh (){
    killall -9 feh
    HOME=/home/$USER/ DISPLAY=:0 feh -Z -F -Y "/home/"$USER"/Pictures/"$number".gif" &
     
    }
     
    # Initialisation des variables
    VERSION_OLD="toto"
    PID=""
     
     
    # On attend 15 secondes que wicd configure le réseau
    sleep 15
     
    # On teste toutes 20 secondes si une nouvelle version du diapo est disponible sur le partage et on met à jour si nécessaire ...
    while true; do
        # On test les differentes version de diaporama possible
        checkextention
        changefeh
        #  On rècupère la date de dernière modification du diaporama, sur le partage Samba
        VERSION_NEW=$(smbclient //$IP_SE3/$partage -U $user%$password -c 'ls '$chemin''$fichier''$ext''  | cut -f 1 | awk '{print $4 $5 $6 $7 $8}')
       echo "version new: "$VERSION_NEW
       echo "versio old : "$VERSION_OLD


    Merci pour tout

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    on utilise stat* !

    donc, a priori :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    smb[...] -c "stat $chemin$fichier$ext"
    * parce qu'il permet un formatage fin de la sortie (n'afficher que le nécessaire).
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    ON NE TAPE PAS SUR LES DOIGTS , CA FAIT MAL !!!!!

    Bon pour le moment chez moi la connexion sur le nas ne fonctionne pas : version new: Server doesn't support UNIX CIFS calls.

    pourtant cifs est activé sur le nas.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Citation Envoyé par steph-ero Voir le message
    ON NE TAPE PAS SUR LES DOIGTS , CA FAIT MAL !!!!!

    Citation Envoyé par Sheldon Cooper
    là, là.
    là, là.
    Bon pour le moment chez moi la connexion sur le nas ne fonctionne pas : version new: Server doesn't support UNIX CIFS calls.

    pourtant cifs est activé sur le nas.
    c'est un autre problème qui requiert l'ouverture d'un nouveau sujet.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ON N'UTILISE PAS ls DANS UN SCRIPT !!! ...
    * parce qu'il permet un formatage fin de la sortie (n'afficher que le nécessaire).
    J’avoue ne pas comprendre.
    Pourrais tu m'aider à bien mesurer l'avantage ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    si tu veux récupérer des informations (la date, par exemple) concernant un fichier, il est plus simple, et plus fiable, de n'utiliser que stat, qui permet (avec son option -c) de n'afficher que les données pertinentes dans un format réutilisable , plutôt que de bricoler la sortie de ls.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Erreur "Syntax error on token "(", new expected after this token"
    Par domxaline dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 20/02/2013, 15h40
  2. Réponses: 16
    Dernier message: 28/06/2007, 17h10

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