Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2011, 13h28   #1
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
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 :
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 :
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é?
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 14h07   #2
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
Salut,

Ajoute

tout au début de ton script pour spécifier à ton script qu'il doit utiliser bash.
__________________
Alea Jacta Test!
Mygale1978 est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 14h39   #3
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
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
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 14h58   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
#!/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
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 15h09   #5
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
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
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 15h18   #6
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Envoyé par maxhazard Voir le message
Bon j'ai trouvé un bug que j'ai réparé.
Ok et lequel ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h27   #7
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
l'increment inc se s'incrementait pas .

Ps ca ne marche toujours pas.
Vous pouvez m'aider?
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 15h55   #8
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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 :
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[@]}
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h01   #9
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
J'ai testé le code, la même erreur apparait.
Je suis sur ubuntu 10.10

voici le retour shell:
Code :
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

maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h06   #10
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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 :
1
2
readlink -f /bin/bash
whereis bash
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h10   #11
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
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 :
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h16   #12
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Tu es sûr que tu as bien "/bin/bash" comme shebang et non pas "/bin/sh" ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h32   #13
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
oui mon fichier commence par
Code :
1
2
3
#!/bin/bash 
set -x
set -v
De plus une commande avant le tableau fonctionne:

Code :
1
2
read serveur
echo $serveur
Tu dis que le code ne fonctionne pas chez toi non plus.
Cela doit venir du code non?
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h35   #14
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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)
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h37   #15
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Euh... juste un truc : comment lances-tu ton script ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h39   #16
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
Je fais sudo -s, je lance la commande
et voila
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h42   #17
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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 :

__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h42   #18
Expert Confirmé Sénior
 
Homme Laurent Willems
Expert Stop/Start
Inscription : septembre 2002
Messages : 2 551
Détails du profil
Informations personnelles :
Nom : Homme Laurent Willems
Âge : 33
Localisation : Belgique

Informations professionnelles :
Activité : Expert Stop/Start

Informations forums :
Inscription : septembre 2002
Messages : 2 551
Points : 4 271
Points : 4 271
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 :
1
2
 
# bash monfichier.sh
ou

Code :
1
2
3
 
#chmod +x monfichier.sh
#./monfichier.sh
__________________
Alea Jacta Test!
Mygale1978 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h47   #19
Nouveau Membre du Club
 
Inscription : janvier 2010
Messages : 92
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 92
Points : 38
Points : 38
Ca fonctionne maintenant. Une bonne chose apprise ici et moulte temps gagné.
Merci à vous deux.
Affaire résolue donc.
maxhazard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 16h49   #20
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
De rien
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h18.


 
 
 
 
Partenaires

Hébergement Web