パイプラインで「ifne」を使用する - 複数のコマンドを実行する

パイプラインで「ifne」を使用する - 複数のコマンドを実行する

私のスクリプトで私はifne使用していますmoreutilsパック。この行は次のように単純化できます。

printf "asdf\n" | ifne cat - && echo "stream not empty"

ifneストリームが空でない場合にのみ実行されます。しかし、echo "stream not empty"ストリームが空でない場合にのみ2番目のコマンド()が実行されるようにするにはどうすればよいですか?たとえば、「ストリームが空ではない」と印刷されないように、次のコマンドをどのように変更しますか?

printf "" | ifne cat - && echo "stream not empty"

cat括弧で囲むとecho構文エラーが発生します。

printf "" | ifne (cat - && echo "stream not empty")

ストリームが空でない場合にのみ、最後のコマンドをどのように実行できますか?

ベストアンサー1

次の形式を使用してください。

printf ""     | ifne sh -c  "cat - ; echo 'stream not empty' "

出力はなしで、次のようになります。

printf "bb\n" | ifne sh -c  "cat - ; echo 'stream not empty' "

出力は次のとおりです

bb
stream not empty

おすすめ記事