ファイルへのリダイレクト出力と||のパイプを組み合わせることは可能ですか? wgetのに失敗した場合は"二重パイプ"表記と組み合わせたBashリダイレクション
(wget -qO- example.com/duff || exit) | some_processing >> outfile.txt
が、私は終了し、some_processingを実行していないか、空白のファイルを作成したいと思います:
例(わからないこれはと呼ばれるもの)。
ファイルへのリダイレクト出力と||のパイプを組み合わせることは可能ですか? wgetのに失敗した場合は"二重パイプ"表記と組み合わせたBashリダイレクション
(wget -qO- example.com/duff || exit) | some_processing >> outfile.txt
が、私は終了し、some_processingを実行していないか、空白のファイルを作成したいと思います:
例(わからないこれはと呼ばれるもの)。
#!/bin/bash
RESULT=`wget -qO- example.com/duff`
if [ $? -eq 0 ];
then
echo $RESULT | some_processing >> outfile.txt
fi
それはトリック、ありがとうでした。 –
||
は論理的です。 outfile.txt
を作成しないと、はるかに複雑な構文が使用されます。書かれている通り(通常の方法)、wget
を実行する前でさえもoutfile.txt
が作成されます。
左手のコマンドが失敗した場合、パイプがまったく起こらないようにする方法について正直に考えることはできません。私はあなたの場合、Perlスクリプトを書くだけです。
あなたはそれを行う方法にかなり答えていると思います。
wgetが失敗した場合は、終了してsome_processingを実行しないか、空のファイルを作成します。
のwget wgetの-qO- example.com/duff
あれば[[$? -ne 0]] // $?戻り値は、よく書かれたプログラムで、これはゼロ
なければならないことを意味し、その後は
some_processing >> outfile.txt
Fiの
私は、これはあなたが望むものを達成すると思います。
([$?-eq 0] & & some_processing >> Outfile.txtを)< < < $(wgetの-qO- example.com/duffを)それはないかもしれないこと
注意リターンコードをチェックするのに十分です。 404などのHTTPステータスを返すかどうかチェックするのも良いかもしれません。
これは1ライナーである必要がありますか? –
それはいいですが、他の解決策は喜んで受け入れました –