0

我正在尝试自动化一个脚本,该脚本将文件从我的本地服务器复制到命令行上的远程服务器。我已经对 scp 进行了研究,并且知道如何将文件复制到远程服务器,但是我想将该文件附加到另一个文件。

这是我的代码:

scp ~/file.txt user@host:
ssh user@host cat file.txt >> other_file.txt

当我手动将所有内容输入命令行时,一切正常:

scp ~/file.txt user@host:
ssh user@host
cat file.txt >> other_file.txt

但是当我运行脚本时,只有文件被复制,而不是附加到 other_file.txt 的末尾。帮助?

4

3 回答 3

1

您的代码的第二行应该是

ssh user@host "cat file.txt >> other_file.txt"

三个重点:

  1. 你不希望你的本地shell 以>>任何方式解释(如果它没有被引用,它会这样做)
  2. 一个远程 shell 可以>>正确解释命令。
  3. 的最终参数ssh“加入”以形成命令,而不是按原样携带到argv数组中。这可能很方便,但也可能导致混淆或错误:ssh cat "$MYFILE"两者ssh "cat '$MYFILE'"都在一个常见用例中工作,但它们因.$MYFILE
于 2013-01-30T21:54:10.130 回答
1

您需要将要在远程主机上运行的命令括在引号中。否则,重定向是在本地而不是远程完成的。试试这个:

scp ~/file.txt user@host:
ssh user@host 'cat file.txt >> other_file.txt'
于 2013-01-30T21:54:20.567 回答
0

尝试这个:

  $ cat file.txt| ssh hostname 'cat >> other_file.txt'
于 2013-01-30T21:54:50.790 回答