erreur grep en raison de l'expansion des variables avec des espaces
-
23-09-2019 - |
Question
J'ai un fichier appelé « physics 1b.sh
». En bash, si j'essaie
x="physics 1b"
grep "string" "$x".sh
grep se plaint:
grep: physics 1b: No such file or directory.
Cependant, quand je fais
grep "string" physics\ 1b.sh
Il fonctionne très bien. Donc je suppose que le problème est quelque chose à voir avec la variable ne pas être élargi pour inclure la barre oblique inverse que grep doit reconnaître l'espace. Comment puis-je obtenir que cela fonctionne?
En utilisant bash 3.2, mac os 10.6.
Edit:
Qu'à cela ne tienne, le problème était que x était réglé sur " physics 1b"
, mais quand je l'ai fait echo $x
de vérifier le contenu, bash trancha les espaces à l'avant donc je ne pouvais pas dire que c'était différent. La première ci-dessus fonctionne réellement.
La solution
Mettre l'argument entier entre guillemets doubles:
grep "string" "$x.sh"
Autres conseils
utiliser dans votre script.
grep "string" "${x}.sh"
une autre façon
grep "string" "${x}.sh"