ファイル名を引数として取得しない限り、私のスクリプトがstdoutとして出力されることを望みます。明らかなアプローチは次のとおりです。
if [ -e "$1" ]; then
command_with_output >$1
else
command_with_output
fi
非常に醜くて反復的なので、これを行うためのよりきれいな方法が欲しいです。
以下を試しましたが、動作しません。
[ -e "$1" ] && outfile=$1 || outfile='&1'
command_with_output >$outfile
編集:これは答えの関連性を変えませんが、ファイルがまだ存在していない可能性があるためではなく、touch "$1" && outfile=$1
実際に必要なものであることを質問した後に気づきました。[ -e "$1" ] && outfile=$1
それは存在自体ではありません。回答が同期されない可能性があるため、質問を変更しないでください。
ベストアンサー1
exec
現在のスクリプトの標準出力を別のファイルにリダイレクトするために使用できます。
[ -e "$1" ] && exec > $1
command_with_output