Shell 如何缩短此时间?:先阅读| |退出1;(回声“第一”猫)|$foo

Shell 如何缩短此时间?:先阅读| |退出1;(回声“第一”猫)|$foo,shell,diff,pipe,Shell,Diff,Pipe,其目的是在没有输入的情况下甚至不启动$foo 如果foo=“diff-xyz”,并且输入丢失或为空,则此选项非常有用。 否则,diff将输出所有“xyz”作为差值 最初的问题是“cat doesnotexist | diff-exists”输出“exists”(前缀为“>”)的内容,而我希望整个管道失败。 我目前的解决办法是: cat doesnotexist | (read first|| exit 1; (echo "$first"; cat) | diff - exists) ,但我想要

其目的是在没有输入的情况下甚至不启动$foo

如果foo=“diff-xyz”,并且输入丢失或为空,则此选项非常有用。 否则,diff将输出所有“xyz”作为差值

最初的问题是“cat doesnotexist | diff-exists”输出“exists”(前缀为“>”)的内容,而我希望整个管道失败。 我目前的解决办法是:

cat doesnotexist | (read first|| exit 1; (echo "$first"; cat) | diff - exists)
,但我想要一个短一点的

[ -f doesnotexist ] && diff doesnotexist exists

我移除了管道,它在您的示例中没有附加值。严格地说,这不会让diff失败,它只是不执行。

好吧,输入在远程节点上,而diff在本地运行,因此使用-f将比标题片段更详细。因此,管道的附加值是它获取远程数据。它的输入看起来像“ssh-x-e none-C”who@where猫不爱说话,但这对我来说是不必要的细节,所以我没有告诉你。:-)在这种情况下,您可以使用“scp-C”who@where:doesnotexist.&&diff doesnotexist exists“是的,我也可以。事后需要清理“无行为主义者”,但更直接。谢谢