關於if結構和循環的問題

關於if結構和循環的問題

我是使用 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.

相關內容