2010-03-30 7 views
3

J'ai un fichier appelé "physics 1b.sh".
En bash, si je tentebash: expansion des variables avec des espaces

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 n'étant pas étendue pour inclure le backslash que grep a besoin de reconnaître l'espace. Comment puis-je faire fonctionner ça?

En utilisant bash 3.2, mac os 10.6.

Edit:
Peu importe, 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 coupèrent les espaces à l'avant donc je ne pouvais pas dire que c'était différent. La première façon ci-dessus fonctionne réellement.

+0

note qu'il y a un espace en face de ''1b' physique' dans l'erreur de grep; Etes-vous sûr qu'il n'a pas mentionné .sh à la fin du nom de fichier? –

+0

hmm, je ne suis pas sûr. – anoda9

Répondre

7

Mettez l'argument entier entre guillemets doubles:

grep "string" "$x.sh" 
+0

Cela ne devrait pas être nécessaire, même sans modifier la question, bien que ce soit souvent la meilleure façon de régler le problème. –

1

utiliser dans votre script.

grep "string" "${x}.sh" 
0

une autre façon

grep "string" "${x}.sh" 
Questions connexes