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 :

Commande qui fonctionne en ligne de commande mais pas en script ((standard_in) 1: syntax error)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Par défaut Commande qui fonctionne en ligne de commande mais pas en script ((standard_in) 1: syntax error)
    Bonjour,
    J'ai un script extrait des valeurs d'un fichier (speedtest) dont le contenu est du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ##"ORANGE FRANCE - Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"
    ##
    #!/bin/bash
    var=$(cat $1)
    Server_Name=$(echo $var | cut -d"," -f1-1)
    Server_ID=$(echo $var | cut -d"," -f2-2)
    Server_Ping=$(echo $var | cut -d"," -f3-3)
    Download=$(echo $var | cut -d"," -f6-6)
    Upload=$(echo $var | cut -d"," -f7-7)
    LienResultat=$(echo $var | cut -d"," -f10-10)
    ## problème sur cette ligne !
    Download=$(echo "scale=3; $Download/ 125000" | bc | awk '{printf "%.2f\n", $0}')
    #...
    si j'exécute le script j'obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bash trancheHoraire.sh file.cvs
    (standard_in) 1: syntax error
    Si je lance cette commande dans terminal, ça fonctionne !
    Avez-vous une idée sur le problème ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Et hop! Un p'tit coup de debug (trace) pour voir ce qu'il fait:

    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
    % bash -x trancheHoraire.sh file.cvs
    ++ cat file.cvs
    + var='##"ORANGE FRANCE - Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"'
    ++ echo '##"ORANGE' FRANCE - 'Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"'
    ++ cut -d, -f1-1
    + Server_Name='##"ORANGE FRANCE - Puteaux"'
    [je snippe un peu]
    ++ echo '##"ORANGE' FRANCE - 'Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"'
    ++ cut -d, -f6-6
    + Download='"26577418"'
    [je snippe encore un peu]
    ++ echo 'scale=3; "26577418"/ 125000'
    ++ bc
    ++ awk '{printf "%.2f\n", $0}'
    (standard_in) 1: parse error
    + Download=
    Je teste un peu à la mano pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    % echo 'scale=3; "26577418"/ 125000' | bc
    (standard_in) 1: parse error
    Ça se confirme ! bc n'aime pas qu'on divise une chaine par un nombre...

    PS: Par ailleurs, quelle drôle d'idée d'appeler "file.cvs" un fichier qui semble plus "comma separated values" que "Canvas format"

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Par défaut
    Merci Jack,
    Pourtant ça marche en ligne de commande.
    &Download converti mais pas en script.
    Comment convertir "1234567" en 1234567 dans le script ?

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    Code bash : 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
    $ awk -F '","' '{sub(/^./,"");sub(/.$/,"");} {for (i=1;i<=NF;i++) print $i;}' <<eof
    > "ORANGE FRANCE - Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"
    > eof
    ORANGE FRANCE - Puteaux
    23884
    3.5467
    0.32625
    0
    26577418
    8390410
    364999650
    91138521
    https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f
    1
    17.9035
    26.4743
    2.991
    257.569
    4.27329
    2.50788
    2.273
    57.746
    3.194
    3.789

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk -F '","' '{sub(/^./,"");sub(/.$/,"");} {print $6/12500;}' <<eof
    "ORANGE FRANCE - Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"
    eof
    2126.19

    PS : l'erreur pointée précédemment vient de la différence entre le vide et zéro.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 640
    Par défaut
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ IFS=',' read -ra array <<<'"ORANGE FRANCE - Puteaux","23884","3.5467","0.32625","0","26577418","8390410","364999650","91138521","https://www.speedtest.net/result/c/c643aa2b-5046-4013-aefe-3fdf7044977f","1","17.9035","26.4743","2.991","257.569","4.27329","2.50788","2.273","57.746","3.194","3.789"'
    $ strip() { pat=$1; shift; expr=$@; out=${expr/#$pat/}; echo ${out/%$pat/};}
    $ strip '"' "${array[0]}" #par exemple, avec le premier élément du tableau
    ORANGE FRANCE - Puteaux
    $
    .
    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. Macro qui fonctionne dans un fichier Excel mais pas dans un autre
    Par Olivier2610 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 12/04/2020, 21h05
  2. Commande qui s'exécute en ligne de commande mais pas en script
    Par Kikibolderiz dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 15/02/2019, 09h20
  3. Réponses: 9
    Dernier message: 09/05/2013, 17h27
  4. Code qui fonctionne sur Matlab 7.1 mais pas sur R2009b?
    Par kariboubou dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/06/2011, 19h11
  5. [CS5] Preloader qui fonctionne avec Le player V9 mais pas V10..
    Par ArC3Nik dans le forum Flash
    Réponses: 1
    Dernier message: 06/07/2010, 19h22

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