3桁の長さを確保するために、日付/時刻値を入力します。

3桁の長さを確保するために、日付/時刻値を入力します。

YYYY'DDD'TTT形式でタイムスタンプをレンダリングするスクリプトがあります。ここで Y = 年、D = 365 日、T = 1000 日目の時間です。

#!/bin/bash
clear
s=$(($(date +"%H*3600+%M*60+%S")))
t=$(($s * 5 / 432))
d=$(date +%j)
y=$(date +%Y)
printf "$y\`$d\`$t" "$y" "$d" "$t"

しかし、DとTが常に3つの文字値を生成するように変更する必要があります(たとえば、1月1日には「1」ではなく「001」、1日の最初の分には「1」ではなく「001」) - I何すべきか分からない。

どんな助けでも大変感謝します。

ベストアンサー1

printfたぶんフォーマット文字列を見ることができます。最初の引数は、後続の各引数のプレースホルダをprintf含む書式文字列でなければなりません。

符号付き10進形式の引数を含めることができ、ゼロ%dパディング文字を前に付けることができますd0nn

printf "%d/%d/%d" 2011 2 3

出力されます2011/2/3

printf "%04d/%03d/%05d" 2011 2 45

出力しなければならない 2011/002/00045

おすすめ記事