У меня есть это:
date +"%H hours and %M minutes"
Я использую фестиваль, чтобы сказать это ... но он говорит как: "ноль девять часов" .. Я хочу, чтобы он сказал "девять часов"!
но дата всегда дает мне 09 ... так что мне интересно, может ли bash легко превратить это в 9?
в сложном сценарии я попробовал как
printf %d 09
но не получается .. не восьмерично :(
Есть идеи?
bash
shell
date
arithmetic
Водолей Сила
источник
источник
Ответы:
В вашем случае вы можете просто отключить заполнение нулями, добавив
-
после%
в строку формата даты:%-H
См руководство по дате
Если вы хотите интерпретировать число в другой базе, в bash
Итак, чтобы интерпретировать число как десятичное, используйте
10#n
форму, например.10#09
См. Раздел « Арифметическая оценка » руководства bash.
источник
echo $((011)) $((10#011))
еще один хороший пример, который выводит9 11
lat=048 ; latd=${lat#0} ; echo $((latd-1))
работает, ноlat=-048 ; latd=${lat#0} ; echo $((latd-1))
не работает.plus=$((10#01))
Если вы пытаетесь сделать сравнение в десятичном формате со значениями даты, я нашел этот метод очень эффективным:
Это всегда дает десятичное значение. Так что я могу сделать это:
Там нет проблем с 08 или 09 таким образом. Использование% 10 вместо% 100 дает десятиминутные диапазоны от 0 до 9. Я также обнаружил, что следующее дает десятичные значения без начальных нулей:
источник
Портативно, вы можете легко удалить ведущий
0
из переменной. Это оставляет переменную без изменений, если нет ведущего0
.В bash, ksh или zsh вы можете использовать дополнительные шаблоны глобуса ksh для удаления любого числа ведущих
0
s. В bash бегиshopt -s extglob
первым. В zsh запускайsetopt kshglob
первым.источник
В общем в bash:
в результате чего
Или разные:
Я удивлен, что у даты нет соответствующих опций формата.
источник