是否可以将重定向输出组合到文件和带有||的管道? (不确定这叫什么)
示例:
(wget -qO- example.com/duff || exit) | some_processing >> outfile.txt
如果wget失败,我想退出并且不运行some_processing或创建空白文件。
答案 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 .....等)
可能会很好