#1 Le 10/02/2018, à 22:51
- MichelZ
[Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal
Bonjour,
Je veux récupérer une liste de dossiers dans un tableau :
lisRep=($(find /home/moi -maxdepth 1 -type d))
echo ${lisRep[2]} >> /home/moi/resultat # Pour vérifier si ça marche
Si je l'exécute via le Terminal, pas de problème.
Mais si je veux l'exécuter depuis le gestionnaire de fichiers (clic droit > Exécuter) ou via un raccourci-clavier, ça plante.
Est-ce les parenthèses extérieures qui posent problème ?
Si je mets des "" au lieu de (), j'obtiens une variable texte au lieu d'un tableau.
(je suis sous Xubuntu, donc Thunar pour le gestionnaire de fichiers)
Dernière modification par MichelZ (Le 11/02/2018, à 09:56)
Hors ligne
#2 Le 11/02/2018, à 00:05
- Watael
Re : [Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal
salut,
d'abord, mauvaise méthode :
listDrepertoires=( /home/moi/*/ )
parce que si un nom de répertoire contient un espace, ce nom sera découpé en autant d'élément du tableau.
et il faut TOUJOURS mettre les variables (les tableaux sont des variables) entre guillemets.
« ça plante », «ça marche pas » ne sont pas des "symptômes".
c'est comme dire au médecin « ch'ui malade »
il y a un shebang dans ton script ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 11/02/2018, à 01:01
- MichelZ
Re : [Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal
Merci pour ta réponse,
J'ai essayé ton conseil :
rep="/home/moi"
echo "trace1" >> $rep/trace
lisRep=( $rep/*/ )
echo "trace2" >> $rep/trace
echo ${lisRep[0]} >> $rep/trace
echo "trace3" >> $rep/trace
Si je lance le script dans le Terminal (au Terminal, je tape: /home/moi/Essai1.sh), dans /home/moi/trace, j'ai :
trace1
trace2
/home/moi/Bureau/
trace3
C'est correct.
Mais si je le lance depuis le gestionnaire de fichier (clic droit sur Essai1.sh > Exécuter) , dans /home/moi/trace, j'ai :
trace1
Donc ce sont bien les parenthèses qui posent problème.
Maintenant, si je mets des guillemets :
lisRep="( $rep/*/ )"
ça n'est plus interprété comme un tableau : quand je lance le script depuis le gestionnaire de fichier, dans la trace j'ai :
trace1
trace2
Hors ligne
#4 Le 11/02/2018, à 01:11
- Watael
Re : [Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal
il y a un shebang dans ton script ?
et, il faut TOUJOURS mettre les variables (les tableaux sont des variables), quand elles doivent être développées, entre guillemets.
Dernière modification par Watael (Le 11/02/2018, à 01:12)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 11/02/2018, à 09:54
- MichelZ
Re : [Résolu] Script contenant un tableau ne s'exécute pas hors du Terminal
Ah, c'était ça ! Je ne savais pas ce qu'est un shebang (je me suis mis au shell y a quelques jours seulement), je pensais que c'était un mot d'argot (genre: "y a un bug" ou "y a un loup") ... ha ha ha ...
Donc là j'ai rajouté en tête :
#!/bin/bash
et ça marche !
Merci Watael !
Hors ligne