![기본 숫자를 접두사로 두 자리 0으로 설정하는 쉘 스크립트](https://linux55.com/image/183075/%EA%B8%B0%EB%B3%B8%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EC%A0%91%EB%91%90%EC%82%AC%EB%A1%9C%20%EB%91%90%20%EC%9E%90%EB%A6%AC%200%EC%9C%BC%EB%A1%9C%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
처리 중인 쉘 스크립트에서 일부 추가 프로세스가 출력을 인쇄합니다. 한 자리 숫자인 경우 접두사로 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
하지만 내 기억이 정확하다면 셸에서 날짜 산술을 수행하는 더 좋은 방법이 있습니다. 아마도 "날짜"를 사용할 수도 있습니다.