[Shell] boucle sur champs de fichiers
Deeper
-
Deeper -
Deeper -
Bonjour et meilleurs voeux à tous,
Voici mon problème
J'ai un fichier texte contenant les infos suivantes (dossier, priorite, lettre, papier, timbre) :
123;10;AAAA;-;-
123;5;BBBB;XXXX;-
123;2;-;CCCC;DDDD
Au final je souhaiterais avoir dans des variables en fonction de la priorité
Dossier : 123
champ1 : AAAA (prioritaire par rapport à BBBB)
champ2 : XXXX (prioritaire par rapport à CCCC)
champ3 : DDDD
le fichier étant classé par ordre de priorité décroissante, j'ai fat la fonction suivante
qui est appelée par test_consommable nom_du_champ num_colonne_du_champ
et qui permet de vérifier si la valeur est déjà affectée ou pas (-)
ex : test_consommable lettre 3
function test_consommable
{
Valeur_champ='echo $ligne |cut -f$2 -d\;'
Param='eval echo $1'
if [ "${Valeur_champ}" = "-" ]
then
$1=${Valeur_champ}
fi
}
mais ça me retourne
Dossier : 123
champ1 : AAAA
champ2 : -
champ3 : -
qui est l'affectation hors fonction de la première ligne
Si le test = "-" fonctionne, en revanche, il ne prend pas en compte le $1=${Valeur_champ}
Quelqu'un peut-il m'aider ?
Merci d'avance
Arnaud
Voici mon problème
J'ai un fichier texte contenant les infos suivantes (dossier, priorite, lettre, papier, timbre) :
123;10;AAAA;-;-
123;5;BBBB;XXXX;-
123;2;-;CCCC;DDDD
Au final je souhaiterais avoir dans des variables en fonction de la priorité
Dossier : 123
champ1 : AAAA (prioritaire par rapport à BBBB)
champ2 : XXXX (prioritaire par rapport à CCCC)
champ3 : DDDD
le fichier étant classé par ordre de priorité décroissante, j'ai fat la fonction suivante
qui est appelée par test_consommable nom_du_champ num_colonne_du_champ
et qui permet de vérifier si la valeur est déjà affectée ou pas (-)
ex : test_consommable lettre 3
function test_consommable
{
Valeur_champ='echo $ligne |cut -f$2 -d\;'
Param='eval echo $1'
if [ "${Valeur_champ}" = "-" ]
then
$1=${Valeur_champ}
fi
}
mais ça me retourne
Dossier : 123
champ1 : AAAA
champ2 : -
champ3 : -
qui est l'affectation hors fonction de la première ligne
Si le test = "-" fonctionne, en revanche, il ne prend pas en compte le $1=${Valeur_champ}
Quelqu'un peut-il m'aider ?
Merci d'avance
Arnaud
A voir également:
- [Shell] boucle sur champs de fichiers
- Classic shell - Télécharger - Personnalisation
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
2 réponses
salut,
Je ne sais pas si c'est dans le fichier original, ou si c'est apparu à la recopie sur le forum, mais il y a des espaces en fin de lignes qui ne permettent pas de faire correspondre un simple tiret.
Le code doit-il être portable, ou bien peut-il être en bash ?
pour du portable, ça devrait être
pour du bash
Je ne sais pas si c'est dans le fichier original, ou si c'est apparu à la recopie sur le forum, mais il y a des espaces en fin de lignes qui ne permettent pas de faire correspondre un simple tiret.
Le code doit-il être portable, ou bien peut-il être en bash ?
pour du portable, ça devrait être
Param=$(eval echo \$$1)
pour du bash
Param="${!1}"