logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 03-09-2024 09:53:43

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

Tableaux bash : problèmes rencontrer lors de l'execution de script

Bonjour.

(Au niveau de l'écriture de script, je suis relativement débutant)

Voilà. J'ai des scripts des plus simple suivant des tutos sur le web. Lors de leur lancement dans le terminal j'obtiens des erreurs.
Lors de l'execution du code ligne par ligne dans un terminal, celles-ci fonctionnent bien.

Avant toute chose, je suis sous zsh (avec un ~/.zshrc trouvé sur une distribution Debian) dans un émulateur urxvt. (mon éditeur de texte est soit mousepad soit nano).
En zsh par exemple les tableau commencent à 1 au lieu de zéro.
Mon fichier s'appelle ~/tabtest et je lui ai donné les droit avec un

chomd +x ~/tabtest


je le lance après avoir enregistrer les modification avec :

sh ~/tabtest



Prenons l'exemple du premier script que j'ai sous la main :

#!/bin/bash

files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")

echo ${files[5]}
echo ${files[4]}
echo ${files[3]}
echo ${files[2]}
echo ${files[1]}

unset files
 



Le terminal me répond :

tabtest: 3: Syntax error: "(" unexpected



Si je supprime la troisième ligne du fichier et que je la lance via le terminal mais que je garde le reste du fichier que j'execute par la suite :

$ files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")
$ sh ~/tabtest
tabtest: 5: Bad substitution



Suite a quoi je prend un ligne du fichier que j'execute :

$ echo ${files[3]}
f3.txt



Afin de refaire des testes, à cette étape ci, je passe un $ unset files pour reseter ma variable.

La meilleur doc, que j'ai trouvé pour le moment est à cette page ci :
https://fr.linux-console.net/?p=19973
mais il existe beaucoup de pages autres - dont un bon nombre semblent éronée ou trop succincte.

Voilà. merci de votre aide.

Hors ligne

#2 03-09-2024 11:37:31

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Tableaux bash : problèmes rencontrer lors de l'execution de script


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#3 03-09-2024 11:37:54

dezix
Membre
Distrib. : Debian stable
Noyau : Linux amd64 (stable)
(G)UI : XFCE4
Inscription : 19-02-2018

Re : Tableaux bash : problèmes rencontrer lors de l'execution de script

Bonjour,

j'ai testé ton code :


$ cat ./test1.sh
#!/bin/bash

files=("f1.txt" "f2.txt" "f3.txt" "f4.txt" "f5.txt")

echo ${files[5]}
echo ${files[4]}
echo ${files[3]}
echo ${files[2]}
echo ${files[1]}

unset files

$ ./test1.sh

f5.txt
f4.txt
f3.txt
f2.txt

 



... il fonctionne... presque => manque f1.txt mais pas d'erreur affichée.

Je n'ai pas idée de ce qui coince sad


En général, je termine mes scripts par une instruction exit
mais pour le cas précis, ça ne change rien au résultat.


Perso, il y a quelques temps, j'ai voulu, (et renoncé à) utiliser un tableau comme entrée dans une boucle d'un script (ici ça serait pour éviter de répéter 5x echo).

Malgré pas mal d'essais et de recherches, j'ai eu un comportement qui ne correspondait pas à ce que je pensais avoir compris.

Ça m'a pris la tête et j'ai recherché une solution sans tableau,
pourtant l'usage d'un tableau me semblait tout indiqué roll

Hors ligne

#4 03-09-2024 11:42:20

dezix
Membre
Distrib. : Debian stable
Noyau : Linux amd64 (stable)
(G)UI : XFCE4
Inscription : 19-02-2018

Re : Tableaux bash : problèmes rencontrer lors de l'execution de script

Ah! je n'avais pas vu que ton shell est zsh

Peut-être le script devrait débuter par : #!/bin/zsh

Hors ligne

#5 03-09-2024 14:53:04

crap0
Membre
Lieu : Bruxelles (Be)
Distrib. : debian 12
Noyau : Linux 6.1.0-17-amd64
(G)UI : i3
Inscription : 27-09-2018
Site Web

Re : Tableaux bash : problèmes rencontrer lors de l'execution de script

Je ne savais pas que l'on pouvait mettre #!/bin/zsh .. pour deux raison .. a ce que j'ai en souvenir zsh est une sorte de couche supplémentaire se basant sur bash. Deuxièmement, l'entête sert à derterminer comment il faut lire le script et l'interprétateur se charge du reste. bash étant plus un forme de langage par rapport à zsh style interpretateur.  (Désolé j'ai pas trop les mots pour expliqué mon idée...)
Sauf si je me trompe.

J'ai essayé le script avec #!/bin/zsh  .. même problème. J'ai même ajouter un .sh a mon script mais bon comme prévu, ça change rien de particulier,... Normal, on va dire.

Un très simple script comme celui d'après, fonctionne : j'obtiens bien Yo en réponse...

#!/bin/zsh

var123=Yo
echo $var123

unset var123



J'avais pensé éventuellement à voir si mon ~/.zshrc n'a pas de possibles problèmes. Mais je suis pas compétant pour en vérifier les 3/4.
Comme dit, ce fichier a été récupéré sur une distribution dont j'aimais le comportement.
Donc j'ai faire un teste en trouvant/écrivant un autre fichier de configuration de Zsh.

Dans mon Home, J'ai aussi un .bashrc : est-il possible qu'il existent des conflits entre les deux ?
(Toujours de souvenirs, Zsh prend par exemples les Alias définient dans le .bashrc si il existe et les utilisent)

Je vais donc essayer en remettant mon shell en Bash... pour voir quoi...
Et aussi en créant un nouveau ~/.zshrc après avoir remis mon shell de départ (zsh).

Donc c'est bien interne à mon ordi et c'est pas mon script qui bug.

Merci déjà et d'avance ! ..
C.

Dernière modification par crap0 (03-09-2024 14:58:23)

Hors ligne

#6 03-09-2024 15:20:04

vv222
Administrateur
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Tableaux bash : problèmes rencontrer lors de l'execution de script

dezix a écrit :

... il fonctionne... presque => manque f1.txt mais pas d'erreur affichée.


Comme il y a une ligne vide affichée en premier, je pense que celle-ci correspond à echo ${files[5]} et que tu t’es trompé sur les index : ceux-ci vont probablement de ${files[0]} (la première entrée) à ${files[4]} (la cinquième entrée).

Je ne connais pas grand chose à Bash, donc ça mérite vérification.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#7 03-09-2024 15:45:58

dezix
Membre
Distrib. : Debian stable
Noyau : Linux amd64 (stable)
(G)UI : XFCE4
Inscription : 19-02-2018

Re : Tableaux bash : problèmes rencontrer lors de l'execution de script

@vv222 bien vu la numérotation de l'index débute à 0     kernal_panic.gif

@crap0 le shebang #! indique le chemin de l'interpréteur (programme) qui doit exécuter ce qui suit (le script).

Hors ligne

Pied de page des forums