如何在 bash 腳本中定義和使用全域檔名

如何在 bash 腳本中定義和使用全域檔名

編輯:更改了動態計算變數名稱的要求,因為我的用例並不嚴格需要它,並且提供了適合我的解決方案。

這可能是不可能做到的,但這裡是:

我有一個 bash 腳本,它對 ASCII xyz(緯度、經度、深度)三元組的輸入檔案進行一些格式化和檔案類型轉換,並建立各種輸出檔案類型。我試圖避免每次編寫與此類似的腳本時都必須爭論輸出檔名;我想我正在嘗試找到一種計算輸出檔案名稱的方法全球在我的系統上給定任何輸入檔名,可以透過exportbashrc 中的輸出檔名後綴,或在我的腳本中取得的其他檔案中。

例如,在典型的腳本中,我將根據命令列上給出的輸入檔案動態建立輸出檔案名稱:


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

一個簡單的方法乾燥就是將通用程式碼寫入常規文件,並在每次需要時取得該文件。在重擊中你甚至可以傳遞參數。這是“按需”,而不是“動態運算”;即,如果$1由於某種原因發生變化,那麼您將需要再次獲取資源來更新變數。

相關內容