Domanda

Ho un file chiamato "physics 1b.sh". In bash, se provo

x="physics 1b"
grep "string" "$x".sh

grep si lamenta:

grep:  physics 1b: No such file or directory.

Tuttavia, quando lo faccio

grep "string" physics\ 1b.sh 

Funziona bene. Quindi credo che il problema è qualcosa a che fare con la variabile non essere ampliata per includere il backslash che grep deve riconoscere lo spazio. Come faccio ad avere questo lavoro?

Utilizzando bash 3.2, Mac OS 10.6.

Modifica:
Non importa, il problema era che x è stato impostato su " physics 1b", ma quando l'ho fatto echo $x per controllare i contenuti, bash tagliato fuori gli spazi nella parte anteriore quindi non ho potuto dire che era diverso. Il primo modo di cui sopra effettivamente funziona.

È stato utile?

Soluzione

Mettere l'intero argomento fra virgolette:

grep "string" "$x.sh"

Altri suggerimenti

utilizzare questo nello script.

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

un altro modo

grep "string" "${x}.sh"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top