
我是使用 bash 腳本編程的新手。這是我的問題:我要開啟一種檔案名稱包含日期的資料(格式:)file_yyyymmddhh.nc
。有一些要求:
mm
從 01 到 12。dd
從 01 到 28、30 或 31,取決於月份。
我嘗試用 if 結構和循環來解決這個問題。我知道我可以使用類似的東西,以便我可以應用${dd}
到我的檔案名稱。
if [${mm} == 01] ; then
for ((i=1; i<=31; i=i+1))
do
${dd}=i
done
fi
但我不知道如何指定${dd}
為 2 位整數,尤其是當${dd} <= 9
.有什麼辦法可以修復上面的程式碼嗎?
答案1
您可以使用printf
它來格式化您的數字。這裡%02d
表示一個兩位整數,如果適用的話,帶有前導零。
dd=$(printf "%02d" $i)
您可以擴展它,以便如果$y
、$m
、$d
和$h
包含您的年、月、日和小時數字,則構造可以變成這樣
file=$(printf "file_%04d%02d%02d%02d.nc" $y $m $d $h)
當我們在這裡時,您的構造${dd}=i
是不正確的。該$
符號在變數名稱前面加上前綴,以取得該變數的值(在您的情況下,i
是變數並$i
等於其值)。所以在你的情況下你會寫成dd=$i
.