我正在从machineA运行我的脚本并相应地创建日志文件。根据脚本要求,需要通过执行ssh(使用keygen无密码)导航到MachineB。在MachineB上维护单独的日志文件。现在我想将machineB中的logfile与machineA中的logfile合并。由于我无法将scp从MachineB变为MachineA无密码,因此考虑将变量中的logfile内容存储在MachineB中的变通方法,然后将该值分配给本地变量,该变量稍后可用于追加到MachineA的日志文件中。
以下是代码摘录:
a="$(ssh userw@server.com "
y=$("<"$logfileMachineB);
exit")"
输出:"-bash: logfileMachineB: No such file or directory
另外,尝试做== cat $logfileMachineB
但同样的错误。
请帮助达到要求。
答案 0 :(得分:3)
要将远程文件的内容存储到本地计算机上的变量,您可以执行以下操作:
a=$(ssh user@remote "cat file")
如果您不想使用cat
,可以使用echo
执行相同操作(虽然我不太了解优势):
a=$(ssh user@remote "echo \"\$(< file)\"")
重要的是要转义内部引号和$
,以便它们不会在本地计算机上展开。
无论哪种方式,您现在都可以echo "$a"
在本地计算机上查看远程文件的内容。
正如William在评论中指出的那样,通常将命令替换$()
括在双引号中是个好主意,以防止与word splitting相关的问题。