J'ai ceci:
date +"%H hours and %M minutes"
J'utilise festival pour le dire .. mais il dit: "zéro neuf heures" .. je veux que ça dise "neuf heures"!
mais la date me donne toujours 09 ... alors je me demande si bash peut facilement faire que ça devienne juste 9?
dans le script complexe, j'ai essayé comme
printf %d 09
mais ça échoue .. pas octal :(
une idée?
bash
shell
date
arithmetic
Puissance du Verseau
la source
la source
Réponses:
Dans votre cas, vous pouvez simplement désactiver zéro padding en ajoutant
-
après%
dans la chaîne de format de date:%-H
Voir le manuel de date
Si vous voulez interpréter le nombre dans différentes bases, en bash
Donc, pour interpréter un nombre comme un nombre décimal, utilisez la
10#n
forme, par exemple.10#09
Voir la section Évaluation arithmétique du manuel de bash.
la source
echo $((011)) $((10#011))
est un autre bon exemple qui produit9 11
lat=048 ; latd=${lat#0} ; echo $((latd-1))
fonctionne, maislat=-048 ; latd=${lat#0} ; echo $((latd-1))
ne fonctionne pas.plus=$((10#01))
Si vous essayez de faire des comparaisons décimales avec des valeurs de date, j'ai trouvé cette méthode très efficace:
Cela donne toujours une valeur décimale. Donc je peux faire ça:
Il n'y a pas de problème avec 08 ou 09 de cette façon. L'utilisation de% 10 au lieu de% 100 vous donne une plage de dix minutes allant de 0 à 9. Les résultats suivants donnent également des valeurs décimales, sans zéros au début:
la source
De manière portable, vous pouvez facilement supprimer un interlocuteur
0
d'une variable. Cela laisse la variable inchangée s'il n'y a pas d'interlignage0
.Dans bash, ksh ou zsh, vous pouvez utiliser les modèles globaux supplémentaires de ksh pour supprimer un nombre quelconque de
0
s principaux . En bash, lancez leshopt -s extglob
premier. Dans zsh, lancez d'setopt kshglob
abord.la source
En général en bash:
résultant en
Ou différent:
Je suis surpris que la date n'ait pas les options de format appropriées.
la source