Variable remise à zero, pourquoi ?
Résolu/Fermé
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
-
4 oct. 2014 à 18:06
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 oct. 2014 à 11:58
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 5 oct. 2014 à 11:58
A voir également:
- Variable remise à zero, pourquoi ?
- Remise a zero pc - Guide
- Remise a zero chromecast - Guide
- Zero barré clavier ✓ - Forum Windows
- Comment mettre un iphone a zero - Guide
5 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
4 oct. 2014 à 19:44
4 oct. 2014 à 19:44
Salut,
Parce qu'un
Parce qu'un
pipeinduit un
sous-shell, et deux imbriqués, je n'ose même pas imaginer ;-\
while read file
do
...
done < $(find $dir1 -type f)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 oct. 2014 à 21:07
4 oct. 2014 à 21:07
Merci Zipe. Je me doutais bien d'une merde dans ce gout là. Mais normalement, le export est conservé dans les sous shell. Non ?
Sinon, une autre solution. Le but étant de savoir si le find ligne 4 a retourné une valeur ou non.
En dernier recours j'utiliserai un fichier plutôt qu'une variable, mais c'est la plaie.
Sinon, une autre solution. Le but étant de savoir si le find ligne 4 a retourné une valeur ou non.
En dernier recours j'utiliserai un fichier plutôt qu'une variable, mais c'est la plaie.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
4 oct. 2014 à 21:27
4 oct. 2014 à 21:27
Mais normalement, le export est conservé dans les sous shell. Non ?Le problème chez toi c'est qu'il y a un second pipe, et qu'il faudrait alors exporter à nouveau ta variable ;-\
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 oct. 2014 à 21:51
4 oct. 2014 à 21:51
Bon, en attendant, je fait
C'est de la bidouille, mais je ne vois pas comment me dépatouiller de ça.
echo '0'>flag_let ça fonctionne.
C'est de la bidouille, mais je ne vois pas comment me dépatouiller de ça.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
Modifié par zipe31 le 5/10/2014 à 10:08
Modifié par zipe31 le 5/10/2014 à 10:08
Salut,
Le contenu du répertoire :
Le contenu du script
L'exécution :
☮ Zen my nuggets ☯
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. <('')
Le contenu du répertoire :
$ tree
.
|-- foo.sh
|-- titi
| |-- fich1
| |-- fich2
| |-- fich3
| `-- fich4
`-- toto
|-- fich1
|-- fich2
|-- fich3
|-- fich4
`-- fichier
2 directories, 10 files
Le contenu du script
cat foo.sh:
#!/bin/bash #set -x dir1="toto" dir2="titi" while read file do flag_l="0" while read file2 do if (( ${flag_l} > 0 )) ;then echo "multiple file name";fi (( flag_l++ )) if [ "${file2}" = "" ] then echo "${file} non copier" else echo "diff ${file} || ${file2}" diff "${file}" "${file2}" fi done < <(find ${dir2} -name "$(basename ${file})") echo ${flag_l} " 0 !!!!???" if (( ${flag_l} == 0 )) then echo "${file} non copier;";fi done < <(find ${dir1} -type f)
L'exécution :
$ ./foo.sh
0 0 !!!!???
toto/fichier non copier;
diff toto/fich4 || titi/fich4
1c1
< Bonjour la life
---
> Bonjour toi
1 0 !!!!???
diff toto/fich3 || titi/fich3
1c1
< Bonjour la life
---
> Bonjour toi
1 0 !!!!???
diff toto/fich2 || titi/fich2
1c1
< Bonjour la life
---
> Bonjour la vie
1 0 !!!!???
diff toto/fich1 || titi/fich1
1 0 !!!!???
☮ Zen my nuggets ☯
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot. <('')
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
5 oct. 2014 à 10:37
5 oct. 2014 à 10:37
Merci Zipe, je ne connaissais pas "<<" sous cette forme là. Je faissais "<<EOF" en général, pour mettre des commandes en ligne.
D'ailleur, c'est
En fait, tu execute le find dans un sous-shell (utilisation de paraenthèse) et l'entrée est redirigée vers le while à la manière d'un pipe. C'est ça ?
D'ailleur, c'est
<<ou
< <?
En fait, tu execute le find dans un sous-shell (utilisation de paraenthèse) et l'entrée est redirigée vers le while à la manière d'un pipe. C'est ça ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
5 oct. 2014 à 10:54
5 oct. 2014 à 10:54
D'ailleur, c'estLe second avec un espace entre les chevrons (<<ou< <?
< <(commande...)). En fait le premier est une redirection et le second fait partie intégrante de ce qu'on appelle une "substitution de processus", en voici d'ailleurs l'explication.
Extrait du man bash :
Substitution de processusCe qui devrait répondre à ta seconde question ;-)
La substitution de processus n'est disponible que sur les systèmes acceptant le
mécanisme des tubes nommés (FIFO) ou la méthode /dev/fd de noms de fichiers. Elle
prend la forme <(liste) ou >(liste). La liste de processus est exécutée avec son
entrée ou sa sortie connectée à une FIFO ou à un fichier dans /dev/fd. Le nom de ce
fichier est passé en argument à la commande qui sera exécutée comme résultat de
cette substitution. Si on utilise la forme >(liste), l'écriture dans le fichier
fournira des entrées pour la liste. Si la forme <(liste) est utilisée, le fichier
passe en argument devra être lu pour obtenir la sortie de la liste.
Sur les systèmes qui le permettent, la substitution de processus est effectuée
simultanément au développement des paramètres et variables, à la substitution de
commande et au développement arithmétique.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
5 oct. 2014 à 11:58
5 oct. 2014 à 11:58
merci, je ne connaissait pas.
Des fois, c'est un peu du charabia pour moi les man. Là, typiquement.
Des fois, c'est un peu du charabia pour moi les man. Là, typiquement.