Frage

Ich habe eine Datei namens "physics 1b.sh". In Bash, wenn ich es versuche

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

Grep beschwert sich:

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

Aber wenn ich es tue

grep "string" physics\ 1b.sh 

Es funktioniert gut. Ich denke, das Problem hat etwas damit zu tun, dass die Variable nicht erweitert wird, um den Backslash, den Grep braucht, um den Raum zu erkennen. Wie kann ich das zum Laufen bringen?

Mit Bash 3.2, Mac OS 10.6.

Bearbeiten:
Egal, das Problem war, dass X darauf eingestellt war " physics 1b", aber als ich es tat echo $x Um den Inhalt zu überprüfen, hackte die Räume vorne ab, damit ich nicht sagen konnte, dass es anders war. Das erste Wege oben funktioniert tatsächlich.

War es hilfreich?

Lösung

Setzen Sie das gesamte Argument in doppelte Zitate ein:

grep "string" "$x.sh"

Andere Tipps

Verwenden Sie dies in Ihrem Skript.

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

ein anderer Weg

grep "string" "${x}.sh"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top