Bash重定向与“双管”表示法相结合

时间:2009-07-21 19:36:48

标签: linux bash redirect

是否可以将重定向输出组合到文件和带有||的管道? (不确定这叫什么)

示例:

(wget -qO- example.com/duff || exit) | some_processing >> outfile.txt

如果wget失败,我想退出并且不运行some_processing或创建空白文件。

5 个答案:

答案 0 :(得分:3)

||是合乎逻辑的。不创建outfile.txt会占用更复杂的语法;正如您所写的那样(正常方式),即使在outfile.txt运行之前也会创建wget

如果左手命令失败,我无法想到任何强制管道根本不发生的方法。如果我是你,我只会写一个Perl脚本。

答案 1 :(得分:3)

#!/bin/bash

RESULT=`wget -qO- example.com/duff`

if [ $? -eq 0 ];
then
  echo $RESULT | some_processing >> outfile.txt
fi

答案 2 :(得分:1)

  

([$?-eq 0]&& some_processing>> outfile.txt)<<< $(wget -qO- example.com/duff)

答案 3 :(得分:0)

我认为你几乎已经回答了如何做到这一点。

  

如果wget失败,我想退出并且不运行some_processing或创建空白文件。


wget wget -qO- example.com/duff

如果[[$? -ne 0]] // $?意味着返回值,在编写良好的程序中,这应该为零

然后

some_processing >> outfile.txt

网络连接


我认为这将实现你想要的目标。

答案 4 :(得分:0)

请注意,检查返回代码可能不够。检查返回HTTP状态(例如404 .....等)

可能会很好