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