J'utilise la variable IFS
dans un script shell pour analyser certaines données (les données me sont déjà fournies dans un format donné). Comme l'IFS par défaut est whitespace/tab/etc, j'utilise le caractère '¬'
pour délimiter les champs dans les lignes de fichier d'entrée. Les données sont quelque chose commeProblème de variable IFS dans le script avec Unicode
14352345¬AFSFDG1234¬text¬(http://www.google.com,3)(http://www.test.com,2)¬(www.test2.com,4)¬123-23432
J'ai créé un script qui tuyaux le fichier dans une boucle en utilisant la variable IFS en utilisant:
#!/bin/bash;
while IFS=¬ read -r sessionId qId testResults realResults queryId;
do echo $sessionId; done < inputFile
(dans cette boucle je fais en fait un peu de traitement de awk avec un autre fichier).
Ce qui se passe, c'est que si je lance ce fichier manuellement (juste ./fichier), cela fonctionne parfaitement. Si je l'exécute dans le cadre d'un script (cron) ou dans un autre script, j'obtiens des erreurs d'analyse qui suggèrent que ma variable IFS n'est pas utilisée. J'ai essayé de copier l'ancienne variable IFS et de la réinitialiser après analyse ainsi que différentes façons de passer dans la variable IFS (¬
, '¬'
, $'¬'
, etc, mais ne semble pas aider).
Tout pointeur/conseil serait grandement apprécié.
Mise à jour: Après un certain débogage supplémentaire, se révèle le problème est avec l'énoncé de awk plutôt que le séparateur
Merci pour cela.J'ai en fait pris votre suggestion différemment et utilisé des délimiteurs non-unicode! – DOS