ダッシュはスクリプト出力の独自のリダイレクトと同じです。

ダッシュはスクリプト出力の独自のリダイレクトと同じです。

Bashではすべてリダイレクトできます。未来標準出力に出力現在実行中スクリプト。たとえば、このスクリプトを使用すると

exec > >(logger -t my-awesome-script)
echo 1
echo 2
echo 3

これはシステムログに記録されます。

Oct 26 01:03:16 mybox my-awesome-script[72754]: 1
Oct 26 01:03:16 mybox my-awesome-script[72754]: 2
Oct 26 01:03:16 mybox my-awesome-script[72754]: 3

ただし、これはBashに固有のものであり、リダイレクトを含むデフォルトのランチャーはDashでは機能しないようです。

Syntax error: redirection unexpected

Dashまたは両方のシェルで動作させるにはどうすればよいですか?

ベストアンサー1

次のことができます。

{ commands
....
} | logger -t my_awesome_script

これを行うには、すべてのシェルを使用できます。

外観が気に入らない場合は、スクリプトを関数でラップすることもできます。

#!/bin/sh
run() if     [ "$run" != "$$" ] || return
      then   sh -c 'run=$$ exec "$0" "$@"' "$0" "$@" |
             logger -t my-awesome-script
      fi
#script-body
run "$@" || do stuff

おすすめ記事