処理中のシェルスクリプトでは、一部の追加プロセスが出力を印刷します。 1桁の数字の場合は、プレフィックスとして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
は2桁ですが、n_month
まだ1桁が印刷されます。デフォルトのシェル出力を設定するには、2桁の数字を返す必要がありますか?
それともこの問題を解決する他の方法はありますか?
答え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
しかし、私の記憶が正しい場合は、シェルで日付算術を実行するより良い方法があります。おそらく「日付」を使用することもできます。