처리 중인 쉘 스크립트에서 일부 추가 프로세스가 출력을 인쇄합니다. 한 자리 숫자인 경우 접두사로 0을 추가해야 합니다.
이것은 내 현재 스크립트입니다.
c_year=2020
for i in {01..11}
do
n_year=2020
echo 'Next Year:'$n_year
if [[ $i == 11 ]]
then n_month=12
echo 'Next Month:'$n_month
else
n_month=$(($i + 1))
echo 'Next Month:'$n_month
fi
echo $date" : Processing data '$c_year-$i-01 00:00:00' and '$n_year-$n_month-01 00:00:00'"
done
값 i
은 두 자리이지만 n_month
여전히 한 자리가 인쇄됩니다. 기본 쉘 출력을 설정하는 방법은 두 자리 숫자를 반환해야 합니까?
아니면 이 문제를 해결할 수 있는 다른 방법이 있습니까?
답변1
#! /usr/bin/ksh
typeset -Z2 n_month
c_year=2020
for i in {01..11}
do
n_year=2020
echo 'Next Year:'$n_year
if [[ $i == 11 ]]
then n_month=12
echo 'Next Month:'$n_month
else
n_month=$(($i + 1))
echo 'Next Month:'$n_month
fi
echo $date" : Processing data '$c_year-$i-01 00:00:00' and '$n_year-$n_month-01 00:00:00'"
done
하지만 내 기억이 정확하다면 셸에서 날짜 산술을 수행하는 더 좋은 방법이 있습니다. 아마도 "날짜"를 사용할 수도 있습니다.