SCP: 从命令行工作,但 cp: 无法从脚本中统计错误。为什么?

SCP: 从命令行工作,但 cp: 无法从脚本中统计错误。为什么?

我正在使用 scp 将文件从服务器复制到我的计算机。当我从命令行键入该命令时,该命令工作正常,但当我尝试编写脚本来执行该命令时,它会失败并出现“cp:无法统计”错误。看起来脚本正在尝试检查我的计算机上是否存在目录,而我并不打算这样做。

我有一个变量 $LOGIN 等于 user@server

这是在命令行上运行的命令:

scp $LOGIN:dir/dir/file.txt .

这是我在 bash 脚本中的内容:

scp "$LOGIN:$1 $2"

这是我调用脚本的方式:

./scriptname dir/dir/file.txt .

和错误:

cp: 无法 stat ':dir/dir/file.txt': 没有这样的文件或目录

关于如何让这个脚本工作有什么想法吗?

答案1

因为LOGIN没有导出为环境变量,所以当你进入脚本时你就丢失了它,所以脚本尝试执行:

scp :dir/dir/file.txt .

而不是你想要的:

scp user@server::dir/dir/file.txt .

最短的“修复”是:

export LOGIN

在执行脚本之前。

另请注意,引用会更好:

scp "$LOGIN":"$1" "$2"

这样就scp看到了两个独立的字符串,而不是一个。

相关内容