私はbashスクリプトを使ったプログラミングが初めてです。私の問題は次のとおりです。ファイル名に日付(形式:)を含むデータ型を開きたいですfile_yyyymmddhh.nc
。いくつかの要件があります。
mm
01から12まで。 2桁の整数でなければなりません。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
、該当する場合、先頭にゼロが付く 2 桁の整数を表します。
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
。