
저는 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}
특히 ${dd} <= 9
. 위의 코드를 수정할 수 있는 방법이 있나요?
답변1
printf
숫자 형식을 지정하는 데 사용할 수 있습니다 . 여기서 은 %02d
해당하는 경우 앞에 0이 붙는 두 자리 정수를 나타냅니다.
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
.