[bash] Redirection ambigûe...
BlueWolf²
Messages postés
45
Statut
Membre
-
dubcek Messages postés 19021 Statut Contributeur -
dubcek Messages postés 19021 Statut Contributeur -
Bonjour bonjour,
Voici rapidement mon problème : je travaille pour un TD sur un script dont le but est de mélanger un fichier et l'ajouter de façon mélangée à la fin de tous les fichiers .ext d'un dossier donné. Voici ci-dessous mon code source :
Seulement, quand j'exécute le script, j'ai toujours une "ambiguous redirection" aux appels de $i lignes 4 et 15. J'ai tenté d'insérer un
Merci par avance...
Voici rapidement mon problème : je travaille pour un TD sur un script dont le but est de mélanger un fichier et l'ajouter de façon mélangée à la fin de tous les fichiers .ext d'un dossier donné. Voici ci-dessous mon code source :
for i in /testdirectory/*.ext; do #@2
if test "$i" != "$0" ; then #@3
head -n 1 $0 | cat >> $i #@4
RANDOM=$$ #@5
tabft[18]=" " #@6
nb1=0 #@7
while [ $nb1 -ne 18 ]; do #@8
valindex=$(((RANDOM % 18)+1)) #@9
while [ "${tabft[$valindex]}" == "FT" ]; do #@10
valindex=$(((RANDOM % 18)+1)) #@11
done #@12
ligne=$(head -$valindex $0 | tail -1) #@13
tabft[$valindex]="FT" #@14
echo $ligne | cat >> $i #@15
nb1=$(($nb1+1)) #@16
done #@17
fi #@18
done #@19
Seulement, quand j'exécute le script, j'ai toujours une "ambiguous redirection" aux appels de $i lignes 4 et 15. J'ai tenté d'insérer un
echo $i, et le chemin affiché est tout à fait correct. Cependant, l'erreur persiste. Si quelqu'un a une idée...
Merci par avance...
A voir également:
- [bash] Redirection ambigûe...
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition - Forum Shell
- Avertissement de redirection ✓ - Forum MacOS
- Avertissement de redirection Google image - Forum Réseaux sociaux
- Bash pause ✓ - Forum Shell
5 réponses
Bonjour,
je suis pas un spoécialiste en bash, loin de la la...
mais ligne 15 tu lanes un echo de $ligne, il t'affiche donc quelque chose que tu pipe vers un cat.
Hors le cat attend quelque chose à droite, et ça lui vient de la gauche...
Mois je pense que t'as pas besoin de la commande cat et du pipe pour ajouter ( >>) dans $i
En ligne 4 c'est peut etre aussi la commande cat qui est de trop...
En esperant avoir pu t'aider :-)
Cordialement,
je suis pas un spoécialiste en bash, loin de la la...
mais ligne 15 tu lanes un echo de $ligne, il t'affiche donc quelque chose que tu pipe vers un cat.
Hors le cat attend quelque chose à droite, et ça lui vient de la gauche...
Mois je pense que t'as pas besoin de la commande cat et du pipe pour ajouter ( >>) dans $i
En ligne 4 c'est peut etre aussi la commande cat qui est de trop...
En esperant avoir pu t'aider :-)
Cordialement,
Salut salut !
Bon, je n'avais pas pu faire les tests jusqu'à aujourd'hui. Je pensais que ta solution avait une chance de succès, mais en fait, ça ne change strictement rien à la sortie du truc...
Bon, je n'avais pas pu faire les tests jusqu'à aujourd'hui. Je pensais que ta solution avait une chance de succès, mais en fait, ça ne change strictement rien à la sortie du truc...
Salut,
A tout hasard, est-ce que les noms desz fichiers dans ton répertoires contiennent des espaces ?
Sinon déjà pour commencer, exécutes ton script en mode débogage, rajoute la ligne "set -xv" après le "shebang (#! /bin/bash)...
A tout hasard, est-ce que les noms desz fichiers dans ton répertoires contiennent des espaces ?
Sinon déjà pour commencer, exécutes ton script en mode débogage, rajoute la ligne "set -xv" après le "shebang (#! /bin/bash)...
Non, aucun espace.
Je me suis rendu compte de 2 choses (pour info, mon .ext était en fait un .sh) :
- si jamais il n'y a qu'un seul fichier .sh dans le testdirectory, ça passe comme une lettre à la poste ;
- si je fais "for i in *.bat", ça marche aussi sans problème.
C'est donc la solution que j'ai adoptée pour mon TD. Cela ne me dit pas d'où venait l'erreur, mais j'ai au moins la preuve que mon script fonctionne...
Je me suis rendu compte de 2 choses (pour info, mon .ext était en fait un .sh) :
- si jamais il n'y a qu'un seul fichier .sh dans le testdirectory, ça passe comme une lettre à la poste ;
- si je fais "for i in *.bat", ça marche aussi sans problème.
C'est donc la solution que j'ai adoptée pour mon TD. Cela ne me dit pas d'où venait l'erreur, mais j'ai au moins la preuve que mon script fonctionne...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question