2009-07-21 7 views
4

ファイルへのリダイレクト出力と||のパイプを組み合わせることは可能ですか? wgetのに失敗した場合は"二重パイプ"表記と組み合わせたBashリダイレクション

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

が、私は終了し、some_processingを実行していないか、空白のファイルを作成したいと思います:

例(わからないこれはと呼ばれるもの)。

+0

これは1ライナーである必要がありますか? –

+0

それはいいですが、他の解決策は喜んで受け入れました –

答えて

3
#!/bin/bash 

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

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

それはトリック、ありがとうでした。 –

3

||は論理的です。 outfile.txtを作成しないと、はるかに複雑な構文が使用されます。書かれている通り(通常の方法)、wgetを実行する前でさえもoutfile.txtが作成されます。

左手のコマンドが失敗した場合、パイプがまったく起こらないようにする方法について正直に考えることはできません。私はあなたの場合、Perlスクリプトを書くだけです。

0

あなたはそれを行う方法にかなり答えていると思います。

wgetが失敗した場合は、終了してsome_processingを実行しないか、空のファイルを作成します。


のwget wgetの-qO- example.com/duff

あれば[[$? -ne 0]] // $?戻り値は、よく書かれたプログラムで、これはゼロ

なければならないことを意味し、その後は

some_processing >> outfile.txt 

Fiの


私は、これはあなたが望むものを達成すると思います。

1

([$?-eq 0] & & some_processing >> Outfile.txtを)< < < $(wgetの-qO- example.com/duffを)それはないかもしれないこと

0

注意リターンコードをチェックするのに十分です。 404などのHTTPステータスを返すかどうかチェックするのも良いかもしれません。

関連する問題