将远程文件 scp 到本地机器

将远程文件 scp 到本地机器

作为脚本的一部分,我尝试从远程站点复制文件。但出现错误。对我来说这听起来有点奇怪,因为一切听起来都正常:

#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'

更新:括号有问题……

答案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 with space(和括号).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

相关内容