![scp удаленный файл на локальную машину](https://rvso.com/image/658344/scp%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB%20%D0%BD%D0%B0%20%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%83%D1%8E%20%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D1%83%20.png)
как часть скрипта я пытаюсь скопировать файл с удаленного сайта. Но получаю ошибку. Для меня это звучит немного странно, так как все звучит нормально:
#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: проблема со скобками...
решение1
Вам необходимо экранировать все пробелы и скобки:
#!/bin/bash
aaa='/path/to/some\ file\ with\ spaces\(and brackets\).txt'
scp [email protected]:"$aaa" /test/
Кстати, более дружелюбной альтернативой было бы заключить $aaa
в одинарные кавычки в дополнение к двойным:
#!/bin/bash
aaa='/path/to/some file with spaces(and brackets).txt'
scp [email protected]:"'$aaa'" /test/
решение2
Ниже сработало для меня. Я думаю, вам просто нужно убрать пробелы, скобки или что-то еще, и все будет хорошо.
#!/bin/bash
aaa="/tmp/untitled\ text\ 2.txt"
scp -r [email protected]:"$aaa" .
решение3
Я создал файл на своем удаленном хосте с буквальным именем `"/tmp/some file с пробелами (и скобками).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