bash スクリプトでグローバル ファイル名を定義して使用する方法

bash スクリプトでグローバル ファイル名を定義して使用する方法

編集: 私のユースケースでは厳密には必要ないため、動的に計算される変数名の要件を変更し、私にとって機能するソリューションが提供されました。

これはおそらく不可能ですが、やってみます:

私は、ASCII xyz(緯度、経度、深度)の3つ組の入力ファイルに対してフォーマットとファイルタイプの変換を行い、さまざまな出力ファイルタイプを作成するbashスクリプトを持っています。私は、これに似たスクリプトを書くたびに出力ファイル名を整理しなくて済むようにしようとしています。出力ファイル名を計算する方法を見つけようとしているのだと思います。世界的にexport私のシステムでは、bashrc 内の出力ファイル名のサフィックスを ' ' で区切るか、スクリプトでソースとなる他のファイルで、任意の入力ファイル名を指定します。

たとえば、典型的なスクリプトでは、コマンドラインで指定された入力ファイルから出力ファイル名を動的に構築します。


INPUT=$1

INPUT_SUFFIX=`echo $INPUT | cut -d. -f2`
INPUT_BASE=$(basename $INPUT .$INPUT_SUFFIX)
OUTPUT_TEXT="${INPUT_BASE}txt"
OUTPUT_TIFF="${INPUT_BASE}tif"
OUTPUT_GRID="${INPUT_BASE}grd"

#...etc, plus other output formats

私は、すべてのスクリプトでこのような面倒な出力ファイル名の定義を行わなくて済む方法を探しています。毎回コードをコピーして貼り付けるだけで済むことはわかっていますが、出力ファイル名を一度だけ作成し、システム全体でグローバルに定義する方が効率的です。

だからどれでも私が書いたスクリプトでは、 の任意の値に対して、次のよう$1な変数は$OUTPUT_TIFFすでに入力から動的に計算され、「${1}.tif」と評価されます。

答え1

簡単な方法ドライ共通のコードを通常のファイルに書き、必要なときにそのファイルをソースとして読み込む方法です。Bashでは引数を渡すこともできますただし、これは「オンデマンド」であり、「動的に計算」されるものではありません。つまり、$1何らかの理由で変更された場合は、再度ソースを実行して変数を更新する必要があります。

関連情報