このbash機能があります。
zmx(){
"$@" \
2> >( while read line; do echo -e "r2g: $line"; done ) \
1> >( while read line; do echo -e "r2g: $line"; done )
}
この関数はbashとしてのみインポートして実行する必要がありますが、ある神の祝福のためにshにインポートして実行されます。
上記の機能は次のように使用できます。
zmx foo bar
r2g:
fooコマンドのstdout / stderrの前に追加されます。
だから私の質問は - 上記のbash機能をshが利用可能なものに変換する方法を知っている人はいますか?
shが関数を解釈すると構文エラーが発生します。私はこの関数を解釈するためになぜshが呼び出されるのかを調べるために数ヶ月間努力してきましたが、shがそうするのを防ぐ試みをほとんど放棄しました。
ベストアンサー1
POSIXで動作する別のアプローチは次のとおりですsh
。
zmx() {
"$@" 2>&1 | sed 's/^/r2g: /'
}
これにより、read
微妙な処理を防ぐことができます。
これらのシェルの断片を直接確認するには、次のものを使用できます。住宅検査:#!/bin/sh
POSIXシェルを使用したいと知らせるためにshebangを追加すると、何を修正するかを教えてくれます。