Matin all, J'écris un script bash pour extraire les valeurs de certaines balises XML de tous les fichiers d'un répertoire donné. J'ai décidé de le faire en symbolisant chaque ligne et en retournant le jeton relavent. Le problème est que ce n'est pas un tokenizing correctement et je ne peux pas vraiment comprendre pourquoi. Voici l'exemple plus petit que je pouvais faire qui reconstitue la questionL'algorithme de tokenisation de chaînes ne va pas tokeniser
#!/bin/bash
for file in `ls $MY_DIRECTORY`
do
for line in `cat $MY_DIRECTORY/$file`
do
LOCALIFS=$IFS
IFS=<>\"
TOKENS=($line)
IFS=$LOCALIFS
echo "Token 0: ${TOKENS[0]}"
echo "Token 1: ${TOKENS[1]}"
echo "Token 2: ${TOKENS[2]}"
echo "Token 3: ${TOKENS[3]}"
done
done
Je devine que la question est de faire avec mon jongler avec IFS dans une boucle qui utilise elle-même IFS (à savoir l'opération de chat), mais n'a jamais été un problème avant.
Des idées?
Merci, Rik
S'il vous plaît donner asn exemple de ligne à partir du fichier et descrivbe comment la sortie est incorrect –
Plusieurs débutants des erreurs ('for i in $ (ls)', UUOC ...) ici. Voir [bash pièges] (http://mywiki.wooledge.org/BashPitfalls). – Benoit