Bonjour à tous.
Je débute en bash et là je me retrouve devant un problème qui me rend fou.
Je suis sur que c'est très simple et que vous allez me sortir de là très rapidement.
Dans une variable j'ai plusieurs champs dont certains avec des espaces:
ici: echo "Ma var: $TOTO"
rend:"
Ma var: valeur1
valeur2
ma valeur numero 3
Quand je fais
for toto in $TOTO do
echo "trouve: $toto"
done;
il me rend:
trouve:valeur1
trouve:valeur2
trouve:ma
trouve:valeur
trouve:numero
trouve:3
Je voudrais trouver:
trouve:valeur1
trouve:valeur2
trouve:ma valeur numero 3
Comment faire?
Merci d'avance.
Thomas
NB:
Pour info ma variable $TOTO a été construit de cette manière:
$TOTO=`smbclient -N -L "$NETWORK$CURRENT" 2>&1 | grep Disk | sed -e "s/^[\t]*//g" | grep -v [$] | awk -F" " {'print $1_$2_$3 '} `
# Réponse partielle : IFS
Posté par tzeentch00 . Évalué à 3.
Par défaut c'est l'espace, mais si tu fais un export IFS='\n', les espaces ne devraient plus être considérés comme séparant des mots et tu ne devrais plus avoir ton problème...
# séparateur ?
Posté par Phig . Évalué à 3.
Je suis très nul pour ces trucs, mais il m'est arrivé d'utiliser :
IFS=$(echo -e "\n")
(hum !)
(A ce propos, si quelqu'un pouvait expliquer comment affecter ce genre de chaine de caractères plus simplement, je suis preneur)
# réponse groupée
Posté par lcld . Évalué à 5.
IFS=$'\n'
glurps !! D'ailleurs, y aurait pas une erreur dans la commande awk ? (Et le 3è champ peut contenir des espaces...)
TOTO="`smbclient -N -L "$NETWORK$CURRENT" 2>/dev/null |
sed -n '/\$/!s/^\t*\([^ ]*\) *\(Disk\) *\(.*\)/\1_\2_\3/p'`"
[^] # Re: réponse groupée
Posté par tzeentch00 . Évalué à 1.
Merci pour cette précision. Je n'était en effet plus très sûr de export IFS='\n'. Par contre, pourrais-tu expliquer pourquoi il faut mettre un dollar avant '\n' ? J'avoue que ce n'est pas très clair pour moi...
[^] # Re: réponse groupée
Posté par lcld . Évalué à 4.
En ajoutant un `$' devant, on peut écrire des chaînes de cacartères comme en C : http://www.gnu.org/software/bash/manual/bashref.html#SEC12
[^] # Re: réponse groupée
Posté par tzeentch00 . Évalué à 2.
http://linuxfr.org/forums/31/7630.html
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.