次の形式のガイドラインを見ています。
$ printf [format] $elapsed
秒単位で表されます$elapsed
。 「hh:mm:ss」を出力したいです。理解format
できない男性。誰でも提案できますか?
答え1
printf
ksh93シェルの組み込み機能を使用し、$elapsed
86400(1日)未満であると仮定すると、次のようになります。
TZ=UTC0 printf '%(%T)T\n' "#$elapsed"
または、printf
最新バージョンのbashシェルに組み込まれている機能を使用してください(ksh93機能のサブセットを互換性のない方法でコピーします)。
TZ=UTC0 printf '%(%T)T\n' "$elapsed"
%(strftime-format)T
タイムスタンプとして解釈されるパラメータを取り、strftime()
フォーマット仕様に従ってフォーマットするksh93拡張。ここで%T
略語は、%H:%M:%S
HH:MM:SS 24時間形式で時間を提供します。 Unix epoch時間ksh93
を含むさまざまなタイムスタンプ形式を処理し、次のように解釈される場合を除き、Unix epoch時間として解釈される数値のみを処理します。#number
bash
-1
今そして、-2
シェルが呼び出された時間として解釈されます。
zsh
シェルと組み込みstrftime
コンポーネントを使用してください。
zmodload zsh/datetime
TZ=UTC0 strftime %T $elapsed
GNUまたはbusyboxを使用するdate
:
date -ud "@$elapsed" +%T
$elapsed
これはデフォルトでは1970-01-01 00:00:00 +0000以降のUnix秒数であるUnix epoch時間として解釈されるため、1970年1月1日に対応するUTC時間を取得TZ=UTC0
できます。-u
さて、あなたがリンクしたマニュアルページprintf
GNU実装と組み込みprintf
GNUbash
シェル(printf
標準ユーティリティの完全に互換性のない2つの実装)の間の混合を文書化しようとする(および失敗)ようです。私はそのサイトを信頼していません。
走るman printf
あなたのシステムでマニュアルページを入手あなたのスタンドアロンprintf
ユーティリティまたはinfo bash printf
マニュアルinfo zsh printf
ページあなたのprintf
shell zshやbashには独自の組み込みドキュメントはありません(ほとんどのシェルにはあります)。
1 ただし、fish
シェル内で実行すると、man printf
Fish 組み込み機能のマニュアルページが表示されますprintf
。