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 :

la palme du boulet en shell


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut la palme du boulet en shell
    Bonjour
    je débute en shell et j'essaie de remplir un tableau.
    J'ai donc écrit ce bout de code :
    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
     
    #!/bin/bash 
    set -x
    set -v
     
    inc=$((1))
    vari=1
    clients[1]=toto
    echo ' entrez les clients + ip sauf SOA, separes d un espace (nifi si fini)'
    while [ "$vari" != "nifi" ]; do 
    	read vari
    	clients[$inc]=$vari
    	inc=$(($inc+1))
    done
    echo ${clients[1]}
    et lors de l'execution j'ai ce message qui s'affiche

    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
     
    while [ "$vari" != "nifi" ]; do 
    	read vari
    	clients[$inc]=$vari
    	inc=$(($inc+1))
    done
    + [ 1 != nifi ]
    + read vari
    f
    + clients[1]=f
    /root/makedns.sh: 1: clients[1]=f: not found
    + inc=2
    + [ f != nifi ]
    + read vari
    f
    + clients[2]=f
    /root/makedns.sh: 1: clients[2]=f: not found
    + inc=3
    + [ f != nifi ]
    + read vari
    f
    + clients[3]=f
    /root/makedns.sh: 1: clients[3]=f: not found
    + inc=4
    + [ f != nifi ]
    + read vari
    f
     
    ...
    Vous savez où j'ai pêché?
    Dernière modification par Invité ; 20/04/2011 à 16h14.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Ajoute

    tout au début de ton script pour spécifier à ton script qu'il doit utiliser bash.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui en fait je l'ai fait.
    Il s'agit d'un questionnaire et ça bloque ici.
    Le tableau ne semble pas connu.
    J'ai déja des valeurs pour d'autres variables mais quand je veux utiliser un tableau, celui ci ne semble pas connu.

    Je met le #!/bin/bash dans le post pour éclaircir

  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
    Salut,

    #!/bin/bash
    set -x
    set -v
    Ben il serait intéressant que tu nous affiches la sortie verbeuse histoire qu'on essaie d'en tirer partie

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bon j'ai trouvé un bug que j'ai réparé.
    Je vous mets le code avec la sortie verbeuse sur 3 boucles (cf le premier post).
    Merci pour l'aide

  6. #6
    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
    Citation Envoyé par maxhazard Voir le message
    Bon j'ai trouvé un bug que j'ai réparé.
    Ok et lequel ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    l'increment inc se s'incrementait pas .

    Ps ca ne marche toujours pas.
    Vous pouvez m'aider?
    Dernière modification par Invité ; 20/04/2011 à 16h53.

  8. #8
    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
    Y'a un truc qui m'échappe

    Sur quel système es-tu ?

    Est-ce que le code comme suit te renvoie la même erreur ?

    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
     
    #! /bin/bash
     
    set -xv
     
    inc=1
     
    clients[0]=toto
    while :
    do
    echo ' entrez le client '
     
    	read vari
    	if [ "$vari" != "fini" ]
    	then
    		clients[$inc]=$vari
    		((inc++))
    		continue
    	else break
    	fi
    done
     
    echo ${clients[@]}

  9. #9
    Invité
    Invité(e)
    Par défaut
    J'ai testé le code, la même erreur apparait.
    Je suis sur ubuntu 10.10

    voici le retour shell:
    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
    inc=1
    + inc=1
     
    clients[0]=toto
    + clients[0]=toto
    test.sh: 1: clients[0]=toto: not found
    while :
    do
    echo ' entrez le client '
     
    	read vari
    	if [ "$vari" != "fini" ]
    	then
    		clients[$inc]=$vari
    		((inc++))
    		continue
    	else break
    	fi
    done
    + :
    + echo  entrez le client 
     entrez le client 
    + read vari
    f
    + [ f != fini ]
    + clients[1]=f
    test.sh: 1: clients[1]=f: not found
    + inc++
    test.sh: 1: inc++: not found
    + continue
    + :
    + echo  entrez le client 
     entrez le client 
    + read vari
    f
    + [ f != fini ]
    + clients[1]=f
    test.sh: 1: clients[1]=f: not found
    + inc++
    test.sh: 1: inc++: not found
    + continue
    + :
    + echo  entrez le client 
     entrez le client 
    + read vari
    Pour que l'increment inc fonctionne, il faut l'initialiser comme ceci


  10. #10
    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
    Je pense que ça vient de ton shell (dash). Je viens de tester chez moi et effectivement il me renvoie la même erreur

    Que te donne les commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    readlink -f /bin/bash
    whereis bash

  11. #11
    Invité
    Invité(e)
    Par défaut
    Je viens d'installer ubuntu et je n'ai pas encore fait joujou avec ce genre de fichiers .

    Voila ce que les commandes donnent:

    readlink -f /bin/bash:

    whereis bash

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz

  12. #12
    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
    Tu es sûr que tu as bien "/bin/bash" comme shebang et non pas "/bin/sh" ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    oui mon fichier commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash 
    set -x
    set -v
    De plus une commande avant le tableau fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    read serveur
    echo $serveur
    Tu dis que le code ne fonctionne pas chez toi non plus.
    Cela doit venir du code non?

  14. #14
    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
    Citation Envoyé par maxhazard Voir le message
    Tu dis que le code ne fonctionne pas chez toi non plus.
    Cela doit venir du code non?
    Non j'ai dit en mettant "/bin/dash" comme shebang, j'obtiens bien la même erreur

    Avec /bin/bash ça marche (y compris sous Ubuntu)

  15. #15
    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
    Euh... juste un truc : comment lances-tu ton script ?

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je fais sudo -s, je lance la commande
    et voila

  17. #17
    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
    Citation Envoyé par maxhazard Voir le message
    Je fais sudo -s, je lance la commande
    et voila
    Cherche plus

    sh est un lien vers /bin/dash

    Rend ton script exécutable "chmod +x ton_script" et lances-le via :


  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par maxhazard Voir le message
    Je fais sudo -s, je lance la commande
    et voila
    Voilà qui explique tout!

    En tapant la commande de cette manière tu utilises demande d'utiliser le shell basique(sh) qui ne reconnaît pas les tableaux!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    # bash monfichier.sh
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #chmod +x monfichier.sh
    #./monfichier.sh

  19. #19
    Invité
    Invité(e)
    Par défaut
    Ca fonctionne maintenant. Une bonne chose apprise ici et moulte temps gagné.
    Merci à vous deux.
    Affaire résolue donc.

  20. #20
    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
    De rien

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

Discussions similaires

  1. [Palm] Développer sur un Palm
    Par Thom@s dans le forum Mobiles
    Réponses: 4
    Dernier message: 02/09/2003, 16h22
  2. [VB6] comment savoir si la commande shell est terminée ?
    Par ghyscharlotte dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/07/2003, 20h12
  3. Retour de requete postgresql / Shell Script
    Par doohan dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/06/2003, 19h07
  4. [SHELL] Icônes associées à des fichiers
    Par agh dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 09/04/2003, 18h04
  5. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 10h39

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