Salut all,
encore moi et mon shell.
En TD hier, la prof a dit que pour lister les fichiers d'un repertoire sans pb avec les esapce, il faut utiliser :
set liste = "`ls`"
foreach fichier ( $liste )
echo $fichier
end
avec les guillemets. J'ai essayé et ça marche pas, j'ai un fichier "fichier cache" et le nom apparait sur deux lignes donc ça marche pas. C'est du csh que je fais (toujours) mais si vous avez la solution en bash, je suis preneur, ça m'aidera peut-être.
Quelqu'un saurait comment faire ?
Merci à tous
"Que par le vent, ce sera tangent". Eh ben j'ai jamais foutu les pieds dans une salle de classe, mais l'effet reste le meme ! :D
La moins simple, modifier la variable du shell IFS, qui est censé contenir les caractères que le shell utilise comme délimiteurs de token (par défaut, l'espace, la tabulation horizontale et la nouvelle ligne) :
(IFS=$'\t\n'
liste=`ls`
for fichier in$liste; do
echo$fichier
done)
Le code est enveloppé dans un sous-shell (avec (...)) afin d'éviter que la modification de la variable IFS ne perturbe le comportement du reste du sript.
(Malheureusement, je n'ai pas appris le csh depuis la dernière fois, donc je ne sais pas dans quelle mesure c'est valable --- ou dans quelle mesure on peut adapter ça --- en csh...)
Oki pourtant chez moi les doubles quote, ça foire.
Même si tu connais pas csh, c'est pas grave, ça m'aide quand-même
En tout cas, c'est promis, après les partiels, je brule mes cours de csh. lol
Bon je vais essayer de voir ce qui va pas et au pire j'abandonne. lol
Encore merci gouttegd
EDIT : j'aurais une question : que veut dire IFS=$'\t\n' ?
"Que par le vent, ce sera tangent". Eh ben j'ai jamais foutu les pieds dans une salle de classe, mais l'effet reste le meme ! :D
[shell] nom de fichier avec espaces
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.