時間と分を処理する簡単なスクリプトがあります。
文字列sを使用して真夜中の後の分数を計算するには、hh:mm
文字列を分割して次のようにします。hh * 60 + mm
私の質問はそうです。
$ (( tot = 12 * 60 + 30 ))
$ echo $tot
750
代わりに
$ (( tot = 09 * 60 + 30 ))
bash: ((: tot = 09: value too great for base (error token is "09")
私が理解している限り、文字列は09
10進数ではありません。
単に文字列から先行ゼロを削除するよりも良い方法はありますか?
ベストアンサー1
h=09; m=30;(( tot = 10#$h * 60 + 10#$m )); echo $tot
前の数字 #
は基数(または基数)です。
次の数字は#
基数に有効でなければなりません。
出力は常に10進数です。
次の基数を使用できます2~64(GNU bash 4.1.5から)
Bashには前にマイナス記号が必要なので、10#
数字にマイナス記号がある場合は10#
プレフィックスを直接追加しても機能しません。
指摘したとおりウンジョイブ、以前の回避策は廃止$[expression]
予定なので、POSIX 互換を使用することをお勧めします$((expr))
$(( 2#1)) == 1
$((16#F)) == 15
$((36#Z)) == 35
後でどのような「数字」が使用されているのか分かりません。Z