![scp-Remotedatei auf lokalen Computer](https://rvso.com/image/658344/scp-Remotedatei%20auf%20lokalen%20Computer%20.png)
Als Teil eines Skripts versuche ich, eine Datei von einer Remote-Site zu kopieren. Aber es tritt ein Fehler auf. Für mich klingt das etwas seltsam, da alles in Ordnung zu sein scheint:
#aaa="/path/to/some file with spaces(and brackets).txt"
....
#scp [email protected]:"$aaa" /test/
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `scp -f /path/to/some file with spaces.txt'
upd: Problem mit Klammern...
Antwort1
Sie müssen jedes Leerzeichen und jede Klammer maskieren:
#!/bin/bash
aaa='/path/to/some\ file\ with\ spaces\(and brackets\).txt'
scp [email protected]:"$aaa" /test/
Eine benutzerfreundlichere Alternative wäre übrigens, $aaa
zusätzlich zu den doppelten Anführungszeichen auch einfache Anführungszeichen zu verwenden:
#!/bin/bash
aaa='/path/to/some file with spaces(and brackets).txt'
scp [email protected]:"'$aaa'" /test/
Antwort2
Das Folgende hat bei mir funktioniert. Ich denke, Sie müssen nur die Leerzeichen, Klammern oder irgendetwas anderes maskieren, und dann sollte alles gut sein.
#!/bin/bash
aaa="/tmp/untitled\ text\ 2.txt"
scp -r [email protected]:"$aaa" .
Antwort3
Ich habe auf meinem Remote-Host eine Datei mit dem wörtlichen Namen „/tmp/eine Datei mit Leerzeichen (und Klammern) .txt~“ erstellt.
Wenn Sie den Namen in doppelte und einfache Anführungszeichen setzen, konnte ich ihn übertragen. Inspiriert von diesemFrage.
/tmp$ scp remotehost:"'/tmp/some file with spaces(and brackets).txt'" .
some file with spaces(and brackets).txt 100% 0 0.0KB/s 00:00
Mit einer Variablen
/tmp$ aaa="/tmp/some file with spaces(and brackets).txt"
/tmp$ scp puppet:"'$aaa'" .
some file with spaces(and brackets).txt 100% 0 0.0KB/s 00:00