指定管道输出位置

Lum*_*ify 10 linux bash pipe

我想做这样的事情:

echo myserver:~/dir/2/ | rsync -r HERE /local/path/
Run Code Online (Sandbox Code Playgroud)

我希望输出重定向到命令中的指定位置。回声的东西去“这里”。什么是最简单的方法来做到这一点?

Ini*_*ian 10

您可以使用xargs或正是此要求。您可以使用-I作为从管道接收的输入的占位符,做

echo "myserver:${HOME}/dir/2/" | xargs -I {} rsync -r "{}" /local/path/
Run Code Online (Sandbox Code Playgroud)

(或)使用~不带双引号的它不会扩展到HOME目录路径。

echo myserver:~/dir/2/ | xargs -I {} rsync -r "{}" /local/path/
Run Code Online (Sandbox Code Playgroud)

  • @marcelm:感谢您的反馈。是的,我只是想展示多种可能的选择之一。由 OP 选择最佳选项。我确信它不值得一票 (2认同)

PSk*_*cik 8

这个

 rsync -r "$(echo myserver:~/dir/2/)" /local/path/
Run Code Online (Sandbox Code Playgroud)

是最简单的方法。

管道将标准输出与标准输入连接起来。在这里,您希望输出转到一个参数,因此除了经典管道之外,您还需要其他东西。

那个东西是命令替换$())。