Bash

如何從“日期”的輸出中刪除前導零或避免對此類十進制數進行八進制解釋?

  • August 26, 2021

我有這個:

date +"%H hours and %M minutes"

我用節日來表達..但它說的是:“零九小時”..我希望它說“九小時”!

但是日期總是給我 09 ……所以我想知道 bash 是否可以輕鬆地將它變成 9?

在我嘗試過的複雜腳本中

printf %d 09

但它失敗了..不是八進制的:(

任何的想法?

  • -在您的情況下,您可以簡單地通過在%日期格式字元串中追加來禁用零填充:%-H

預設情況下,日期用零填充數字欄位。以下可選標誌可能跟在 ‘%’ 後面:

+ -(連字元)不要填充欄位 + _(下劃線)用空格填充 + 0(零)用零填充 + ^盡可能使用大寫 + #如果可能,使用相反的情況

日期手冊

  • 如果你想解釋不同基數的數字,在 bash

+ 以 0 開頭的常量被解釋為八進制數。 + 前導 0x 或 0X 表示十六進制。 + 否則,數字採用形式$$ base# $$n,其中 base 是 2 到 64 之間的十進制數,表示算術基數,n 是該基數中的數字

因此,要將數字解釋為十進制,請使用10#n形式,例如。10#09

echo $((10#09*2))
18

請參閱bash 手冊的算術評估部分。

引用自:https://unix.stackexchange.com/questions/70966