デフォルトの数字をプレフィックスとして2桁0に設定するシェルスクリプト

デフォルトの数字をプレフィックスとして2桁0に設定するシェルスクリプト

処理中のシェルスクリプトでは、一部の追加プロセスが出力を印刷します。 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

しかし、私の記憶が正しい場合は、シェルで日付算術を実行するより良い方法があります。おそらく「日付」を使用することもできます。

関連情報