Eu tenho isto:
date +"%H hours and %M minutes"
Eu uso o festival para dizer isso .. mas diz assim: "zero nove horas" .. eu quero dizer "nove horas"!
mas date sempre me dá 09 ... então eu me pergunto se o bash pode facilmente tornar isso apenas 9?
no script complexo eu tentei como
printf %d 09
mas falha .. não octal :(
qualquer ideia?
bash
shell
date
arithmetic
Poder do Aquário
fonte
fonte
Respostas:
No seu caso, você pode simplesmente desativar o preenchimento zero acrescentando
-
depois%
na string de formato da data:%-H
Consulte o manual da data
Se você deseja interpretar o número em uma base diferente, no bash
Portanto, para interpretar um número como decimal, use o
10#n
formulário, por exemplo.10#09
Consulte a seção Avaliação Aritmética do manual do bash.
fonte
echo $((011)) $((10#011))
é outro exemplo bom que saídas9 11
lat=048 ; latd=${lat#0} ; echo $((latd-1))
funciona, maslat=-048 ; latd=${lat#0} ; echo $((latd-1))
não funciona.plus=$((10#01))
Se você está tentando fazer comparações decimais com valores de data, achei esse método muito eficaz:
Isso sempre gera um valor decimal. Então eu posso fazer isso:
Não há nenhum problema com 08 ou 09 dessa maneira. Usar% 10 em vez de% 100 fornece intervalos de dez minutos de 0 a 9. Também acho que o seguinte fornece valores decimais, sem zeros à esquerda:
fonte
Portably, você pode remover facilmente um líder
0
de uma variável. Isso deixa a variável inalterada se não houver avanço0
.No bash, ksh ou zsh, você pode usar os padrões glob adicionais do ksh para remover qualquer número de
0
s iniciais . No bash, executeshopt -s extglob
primeiro. No zsh, executesetopt kshglob
primeiro.fonte
Em geral no bash:
resultando em
Ou, diferente:
Estou surpreso que a data não tenha opções de formato apropriadas.
fonte