J'ai une question complémentaire
Comment traiter le même problème si les données sont dans une variable tableau plutôt que dans un fichier ?
je repars de
Rep=$(awk -F"§" '{print $3}' "$ParamChe")
J'obtiens une liste avec une valeur par ligne qui m'interesse
J'aimerais obtenir une variable tableau qui permette de traiter un select avec des espaces dans les noms de chaque valeur
Pour le moment dans le code qui marche le mieux (ce qui me gène c'est
listeFic=($Rep)
est-ce un problème potentiel ?)
le code qui marche le mieux est celui-ci
#!/bin/bash
# paramètre en local test
ParamChe="./ParamChe.csv"
# Changement du Internal File Separator en retourCharriot pour permettre le traitement des noms de fichier avec espace
OLDIFS="$IFS" # memorisation
IFS=$'\n'
Rep=$(awk -F"§" '{print $3}' "$ParamChe")
listeFic=($Rep) # pas de guillemet pour traiter les retours à la ligne comme separateur de champs
IFS="$OLDIFS"
echo -e "\n\$Rep=$Rep\n"
echo -e "\n\$listeFic[@]=${listeFic[@]}\n"
echo "IFS retour à la ligne donne :"
echo "nombre d'element du tableau listeFic=${#listeFic[@]}"
echo "nombre d'element du tableau Rep=${#Rep[@]}"
for i in "${!listeFic[@]}"
do
echo "$i => ${listeFic[i]}"
done
echo -e "\n resultat du select :"
select FDSRL in "${listeFic[@]}" # Select FDS
do echo "$FDSRL" # Select FDS
break
done
# IFS="$OLDIFS"
resultat :
$ ./TabSel5.sh
$Rep=SavHomePhil
Sav SD5_Images
T6 SavTestSauvegarde
Sav FilmsSD5
T6 SavTestSauvegarde
$listeFic[@]=SavHomePhil Sav SD5_Images T6 SavTestSauvegarde Sav FilmsSD5 T6 SavTestSauvegarde
IFS retour à la ligne donne :
nombre d'element du tableau listeFic=5
nombre d'element du tableau Rep=1
0 => SavHomePhil
1 => Sav SD5_Images
2 => T6 SavTestSauvegarde
3 => Sav FilmsSD5
4 => T6 SavTestSauvegarde
resultat du select :
1) SavHomePhil 3) T6 SavTestSauvegarde 5) T6 SavTestSauvegarde
2) Sav SD5_Images 4) Sav FilmsSD5
#?