
私は bash スクリプトを使ったプログラミングの初心者です。問題は次のとおりです。ファイル名に日付 (形式: file_yyyymmddhh.nc
) が含まれるデータを開く必要があります。いくつかの要件があります。
mm
01 から 12 までです。これは 2 桁の整数である必要があります。dd
月によって 01 から 28、30、または 31 までになります。
${dd}
私は if 構造とループを使ってこの問題を解決しようとしました。ファイル名に適用できるように、このようなものを使用できることはわかっています。
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
。