2017-12-19 31 views
0

私はこのコードを持っている:日付出力の先行ゼロを抑制する方法は?

printf -v s '%(%S)T' -1 # grab the current second 
if ((s == 0)); then 
    # at the top of the minute, run some code 
fi 

このコードは、毎分の8,9秒でエラーがスローされます。

bash: ((: 08: value too great for base (error token is "08") 
bash: ((: 09: value too great for base (error token is "09") 

は、どのように私はこれを是正することができますか?基本的には、printfによって生成された日付出力の先行ゼロを抑制する必要があります。

+1

's = $ {s ## * 0}'は、すべての先行ゼロを削除するための単純なパラメータ展開です。 –

+0

@ DavidC.RankinDav 's = 10'についてはどうですか?それはすべてを取り除くだろう。 – PesaThe

+0

@ DavidC.Rankinこれはもっと良いかもしれません: 'shopt -s extglob; s = $ {s ## +(0)} 'となります。 – PesaThe

答えて

1

は、このように、フォーマット文字列で-接頭辞を使用します。

printf -v s '%(%-S)T' -1 

これは、先行ゼロを抑制します。

if ((10#$s == 0)); then 

のUnix &のLinuxスタック取引所の関連記事:

これを解決する way

Aより一般的には変わらないprintfコマンドを維持しながら、このようバッシュ算術でベースを指定することです

関連する問題