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番目が実行されます。とても簡単です。cat
ifne
ifne
echo world
標準入力が空の場合はifne -n
実行されますsh …
。ただ使用することはできませんifne -n echo else | …
。これはelse
2番目の項目に到達し、ifne
それも得ることができるからですworld
。したがって、私たちは3>&1
以前も全体の標準出力にアクセスできます|
。ファイル記述子として使用できます。 3.データがからでなければならないifne -n echo else >&3 | …
null以外の入力の場合を中止します。私たちが望むものを得るにはリダイレクトが必要ですが、リダイレクト自体は必要ありません。ifne -n
ifne
echo
ifne -n
echo else
他のコマンドに置き換えることができます。他のコマンドに置き換えることができます(複数のコマンドが必要な場合がecho word
あります)。sh -c …
私のポイントは、この回答が代替に依存したりelse
印刷されworld
たりしないことです。沈黙することもそうでないかもしれません。それは問題ではありません。