ifneでelseをどのように使用しますか?

ifneでelseをどのように使用しますか?

ifne- 標準入力が空でない場合のコマンド実行

可能であれば、標準入力も空の場合は、コマンドの他の部分を実行したいと思いますifne

$ printf "hello" | ifne echo "world" 
world

ここでは、標準入力が空の場合は別のステートメントで終わりたいと思います。

$ printf "" | ifne echo "world" || echo "else"しかし、何も印刷されません。可能elseですかifne

ベストアンサー1

( ifne -n sh -c 'exec >&3; echo else' | ifne echo world ) 3>&1

標準入力が空でないとifne -n実行されず、入力が2番目の入力に渡されるsh …かのように動作します。 2番目が実行されます。とても簡単です。catifneifneecho world

標準入力が空の場合はifne -n実行されますsh …。ただ使用することはできませんifne -n echo else | …。これはelse2番目の項目に到達し、ifneそれも得ることができるからですworld。したがって、私たちは3>&1以前も全体の標準出力にアクセスできます|。ファイル記述子として使用できます。 3.データがからでなければならないifne -n echo else >&3 | …null以外の入力の場合を中止します。私たちが望むものを得るにはリダイレクトが必要ですが、リダイレクト自体は必要ありません。ifne -nifneechoifne -n

echo else他のコマンドに置き換えることができます。他のコマンドに置き換えることができます(複数のコマンドが必要な場合がecho wordあります)。sh -c …私のポイントは、この回答が代替に依存したりelse印刷されworldたりしないことです。沈黙することもそうでないかもしれません。それは問題ではありません。

おすすめ記事