是否可以在bash中将文件通过管道传输到heredoc?

问题描述 投票:0回答:1

我可以压缩文件、上传文件并将其展开到服务器上的目录中,如下所示:

tar -pzcf - example.txt | ssh [email protected] 'cd /some-path/ && tar -zxf -'

是否可以用heredoc做同样的事情?类似于以下内容(不起作用):

tar -pzcf - example.txt | ssh [email protected] /bin/bash <<EOF
    cd /home/1091507.cloudwaysapps.com/qnqdwumtsj/public_html/_aqualaunch
    tar -zxf -
EOF

理由:我有一堆本地脚本,在两台服务器上通过 SSH 运行,这些服务器以不同方式对待引号,heredoc 修复了该问题。但是,一些脚本通过 pipeviewer 将文件通过管道传输到服务器,以便我可以监视进度,并且我无法找到一种方法将本地文件的内容通过管道传输到

pv
,然后传输到heredoc表达式,以便我可以在服务器上操作该文件(就像我可以在没有heredoc的情况下一样)。

bash shell
1个回答
0
投票

按照您编写的方式,here-doc 正在由本地 shell 处理,而不是远程 shell。您需要引用整个远程命令,以便此处文档位于其中。

tar -pzcf - example.txt | ssh [email protected] '/bin/bash <<EOF
    cd /home/1091507.cloudwaysapps.com/qnqdwumtsj/public_html/_aqualaunch
    tar -zxf -
EOF
'

但是您不需要为此提供此处文档。只需将这两个命令放入 ssh 参数即可

tar -pzcf - example.txt | ssh [email protected] '
    cd /home/1091507.cloudwaysapps.com/qnqdwumtsj/public_html/_aqualaunch
    tar -zxf -
'
© www.soinside.com 2019 - 2024. All rights reserved.