Назад | Перейти на главную страницу

удаленный файл scp на локальный компьютер

в рамках скрипта я пытаюсь скопировать файл с удаленного сайта. Но вышла ошибка. Для меня это звучит немного странно, поскольку все звучит нормально:

#aaa="/path/to/some file with spaces(and brackets).txt"
....
#scp user@example.com:"$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: проблема со скобками ...

Вам нужно избегать каждого пробела и скобок:

#!/bin/bash

aaa='/path/to/some\ file\ with\ spaces\(and brackets\).txt'
scp user@example.com:"$aaa" /test/

Кстати, более удобной альтернативой было бы заключить $aaa с одинарными кавычками в дополнение к двойным кавычкам:

#!/bin/bash

aaa='/path/to/some file with spaces(and brackets).txt'
scp user@example.com:"'$aaa'" /test/

Ниже работал у меня. Я думаю, вам просто нужно избегать пробелов, скобок или чего-то еще, и все должно быть хорошо.

#!/bin/bash

aaa="/tmp/untitled\ text\ 2.txt"

scp -r user@example.com:"$aaa" .

Я создал файл на своем удаленном хосте с буквальным именем `" / tmp / какой-то файл с пробелами (и скобками) .txt ~.

Если вы сделаете двойные кавычки и одинарные кавычки, то я смог бы их передать. Вдохновленный этим вопрос.

/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

С переменной

/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