1つは、もう1つを呼び出す2つのスクリプトがあると仮定して、各エコーの前にテキストを追加して呼び出されるコマンドでエコーが発生したことを視覚的に表示するにはどうすればよいですか?
禁煙健康増進協会
#!/usr/bin/env sh
echo - BEGIN
./b.sh # Append "-" to each echo?
echo - END
b.sh
#!/usr/bin/env sh
echo - BEGIN
echo - END
私が望む出力:
- BEGIN
-- BEGIN
-- END
- END
私は届かないb.sh出力をストリーミングする必要があります。
答え1
echo
前に a が付いた希望のコマンドのテキスト出力である場合、これを関数として-
オーバーライドします。echo
源泉他のスクリプトには.
特別な組み込み関数があるため、その関数を継承します。
#!/usr/bin/env sh
printf '%s\n' '- BEGIN'
echo() {
printf %s -
command echo "$@"
}
. ./b.sh
printf '%s\n' '- END'
(とにかく参考にしてください。echo
避けるのが一番)
答え2
2番目のスクリプトで印刷されたすべての出力にそれを追加するには、その出力をsed
。a.sh
#!/usr/bin/env sh
echo - BEGIN
./b.sh | sed 's/^/-/'
echo - END
その結果は次のとおりです。
$ a.sh
- BEGIN
-- BEGIN
-- END
- END