cat-Befehl mit einer Variablen, die Leerzeichen enthält

2279
prosseek

Ich muss den catBefehl verwenden, um den Inhalt einer Datei anzuzeigen, und der Dateiname enthält Leerzeichen: "embedded board link.rtf".

Ich weise den Dateinamen mit einer Variablen zu:, I="embedded board link.rtf"aber wenn ich verwende cat $I, habe ich diese Fehlermeldung.

wireless-10-146-35-118 Desktop> cat $I cat: embedded: No such file or directory cat: board: No such file or directory cat: link.rtf: No such file or directory 

Was könnte falsch sein?

0

1 Antwort auf die Frage

6
Attie

Sie müssen auch die Variable zitieren:

I="embedded board link.rtf" cat "$I" 

Dies liegt daran, dass die Shell zuerst alle Variablen erweitert und dann den Befehl analysiert:

  1. cat $1
  2. cat embedded board link.rtf

Wenn Sie wirklich Folgendes gemeint haben:

  1. cat "$1"
  2. cat "embedded board link.rtf"

Beachten Sie, dass in bashund vielen anderen Shells Variablen in einfachen Anführungszeichen nicht erweitert werden:

  1. cat '$1'
  2. cat '$1'