bashスクリプトでは、「1 >>」と「2 >>」はどういう意味ですか?

bashスクリプトでは、「1 >>」と「2 >>」はどういう意味ですか?

>>は、既存のファイルを上書きせずにコマンド出力を追加するために使用されることを理解する次のbashスクリプトがありますが、この場合何をしていますか?スクリプトは、ある形式から別の形式に変換するためにいくつかのexeファイルを呼び出します。各ファイルには複数の年があるため、ファイル名を確認して各ファイルを繰り返します。また、このスクリプトを実行すると「あいまいなリダイレクト」が表示されます。

#!/bin/bash
source $HOME/.bashrc

jobout=${1}
joberr=${2}

# Set some paths and prefixes

yr_bgn=2000
yr_end=2000

yr=${yr_bgn}
pth_data='/mnt/'
pth_rst='/mnt/'



while [ ${yr} -le ${yr_end} ]
do
   ./executable1 ${pth_data}file${yr}-${yr}.nc ${yr} ${pth_rst} 1>> ${jobout} 2>> ${joberr}
   ./executable2 ${pth_data}file${yr}-${yr}.nc ${yr} ${pth_rst} 1>> ${jobout} 2>> ${joberr}
   ./executable3 ${pth_data}file${yr}-${yr}.nc ${yr} ${pth_rst} 1>> ${jobout} 2>> ${joberr}
   let yr=${yr}+1
done

ベストアンサー1

1>>2>>特定のファイル記述子(この場合は標準出力(ファイル記述子1)と標準エラー(ファイル記述子2))にリダイレクトされます。

したがって、スクリプトはすべての「標準」メッセージをにリダイレクトし${jobout}、すべてのエラーメッセージをにリダイレクトします${joberr}。どちらの場合も、>>すべてのメッセージがそのファイルに追加されます。

${jobout}とは、2つのコマンドライン引数からスクリプトの${joberr}値(${1}および${2})を取得するため、メッセージを保存するために使用するファイルを指定する必要があります。パラメータが指定されていない場合、スクリプトは表示される「あいまいなリダイレクト」エラーメッセージを生成します。スクリプトは実際にパラメータが指定されていることを確認し、適切なエラーメッセージを生成する必要があります。それ以外の場合は、次のようになります。

if [ -z "$1" -o -z "$2" ]; then
    echo "Log files for standard and error messages must be specified"
    echo "${0} msgfile errfile"
    exit 1
fi

スクリプトの始めに。

おすすめ記事