GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Probleme im Skript mit Leerzeichen im Dateinamen?

Ich habe ein Skript, das scp eine Datei vom Remote-Host zurück zum lokalen Host ist. Manchmal enthalten die Dateinamen Leerzeichen. scp mag keine Leerzeichen in seinen Dateinamen. Aus irgendeinem Grund haben meine Versuche, mit den Leerzeichen umzugehen, nicht zum richtigen scp-Pfad geführt.

Code:

PATH=/var/root/Documents/MyFile OG-v1.2.3.pkg
scp $PATH [email protected]:/Users/Me/Desktop

Ergebnisse in

Cannot find directory: var/root/Documents/MyFile
Cannot find directory: OG-v1.2.3.pkg

PATH in Anführungszeichen setzen "$PATH" gibt den gleichen Fehler.

Das Austauschen der Leerzeichen gegen Escape-Leerzeichen funktioniert auch nicht, obwohl es, soweit ich das beurteilen kann, sollte:

ESC_PATH=${PATH/' '/' '}

Obwohl das Drucken des Escape-Pfads zeigt, dass die Bearbeitung funktioniert hat:

echo $ESC_PATH
> /var/root/Documents/MyFile OG-v1.2.3.pkg

Akzeptierte Antwort:

Sie sollten sowohl die Deklaration als auch die Verwendung zitieren

path="/var/root/Documents/MyFile OG-v1.2.3.pkg"
scp "$path" [email protected]:/Users/Me/Desktop

Wenn Sie das erste nicht in Anführungszeichen setzen, $path enthält nur den ersten Teil. Wenn Sie das zweite nicht zitieren, scp behandelt jeden durch Leerzeichen getrennten Teil als Argument.

(Ich habe $PATH geändert zu $path weil $PATH ist eine wichtige reservierte Variable und darf nicht für allgemeine Zwecke verwendet werden.)


Linux
  1. Laufendes Skript mit „. “ Und mit „Quelle“?

  2. Dateinamen mit Leerzeichen an ein Shell-Skript übergeben?

  3. Skript endet abrupt mit einer abgebrochenen Nachricht?

  4. Leerzeichen für Variablen in Bash-Skript?

  5. Warum kann ich Leerzeichen in einem Bash-Skript nicht maskieren?

Automatisieren Sie die Bildverarbeitung mit diesem Bash-Skript

So schreiben Sie ein Bash-Skript mit Beispielen

Zeichnen Sie Ihr Terminal mit Skript und Skriptwiederholung auf

Wie entferne ich Leerzeichen in Pfaden für Scp in Linux?

So entfernen Sie Leerzeichen aus Dateinamen in Linux

Templating mit Linux in einem Shell-Skript?