Bonjour,

La boite de dialogue de sélection de fichiers de zenity me renvoie une sortie de ce format:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
echo "$fichiers"
/home/debian/lance-vnc-ssh|/home/debian/materiel.html|/home/debian/Menu.desktop
Comme je ne sais pas a priori le nombre de fichiers qui seront sélectionnés, je fais une boucle me permettant de traiter un à un chacun des fichiers jusqu'à ce qu'il n'y en ait plus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Je vérifie qu'il y a bien au moins un fichier sélectionné
if [ -n "$fichiers" ]
   then fini="non"
   else fini="oui"
fi
while [ "$fini" = "non" ]; do
   fichier=$(echo "$fichiers" | awk -F "|" '{print $1}')
   echo "$fichier"
  # ici je veux supprimer le 1er champ pour reprendre la boucle avec les champs restants
   fichiers=$(echo "$fichiers" | awk -F "|" '{$1="";print}')
   if [ -z "$fichiers" ]
      then fini="oui"
   fi
done
Mais à la sortie de la commande de suppression de champ, awk supprime bien le 1er champ mais change le caractère séparateur puisqu'en testant la sortie j'obtiens ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
echo "$fichiers"
/home/debian/materiel.html /home/debian/Menu.desktop
Ce qui rend ma boucle inopérante.

Pourquoi awk change-t-il le caractère séparateur de champ ? Comment supprimer le champ proprement sans modifier le caractère séparateur ?

Merci d'avance pour votre éclairage.