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
パディング文字を前に付けることができますd
。0n
n
printf "%d/%d/%d" 2011 2 3
出力されます2011/2/3
printf "%04d/%03d/%05d" 2011 2 45
出力しなければならない 2011/002/00045
答え2
date
仕事に行こう!
date +%3j
その後、ミリ秒の部分の場合、簡単な方法は1000にミリ秒数を加えて先行1
。したがって、スクリプトの場合:
s=$(($(date +"%H*3600+%M*60+%S")))
t=$(($s * 5 / 432 + 1000))
date "+%Y'%3j'${t#1}"