2010-11-30 22 views
2

est le script ici:Comment convertir linux "date +% s" sortie à un format plus lisible dans le script bash


#!/bin/bash 

i="0" 
startTime=`date -u +%s` 
startTime=$[$startTime+$1+5] 
echo "" 
echo "##################" 
echo "LAUNCHING REQUESTS" 
echo " COUNT: $1 " 
echo " DELAY: 1 " 
echo " EXECUTION: $startTime " 
echo "##################" 
echo "" 

while [ $1 -gt "$i" ] 
do 
    i=$[$i+1] 
    php avtestTimed.php $1 $2 $startTime & 
    echo "QUEUEING REQUEST $i" 
    sleep 1 
done 


 

donc je veux convertir startTime $ en un format UTC

+3

Le formulaire '$ []' est obsolète. Utilisez '$ (())' à la place. Ou vous pouvez supprimer le signe dollar et mettre les parenthèses à l'extérieur de l'expression entière: '((startTime + = $ 1 + 5))' et '((i ++))'. De même, n'utilisez pas de backticks, utilisez '$()': 'startTime = $ (date -u +% s)'. Il est plus lisible, peut être facilement imbriqué et évite des citations et des échappées difficiles. –

Répondre

3

Essayez:

date -d @$(($startTime-$1-5)) 

si vous voulez décoder le premier état de la variable startTime $, ou cette :

date -d @$startTime 

et, vous pouvez ajouter -u argument pour obtenir le temps UTC ...%)

lire le man date

1

Quel format recherchez-vous? Date exécution simplement avec -u vous donnera un format lisible par la sortie de temps UTC, à savoir:

# date -u 
Tue Nov 30 15:35:12 UTC 2010 
1

Vous pouvez utiliser -d pour passer de nouveau dans $startTimedate pour le traitement, le préfixe vient avec @ il est reconnu comme secondes depuis l'époque.

$ date -d @$startTime 

Une fois que vous avez cela, vous pouvez changer le format de sortie. Je suggère de regarder le man page ou la documentation d'information de date pour cela. Pour la sortie UTC vous utiliseriez

$ date -d @$startTime -u 
0

j'aurais une autre variable

startTimeHuman = $ (date -u -R)

juste à côté de l'endroit où vous définissez startTime. De cette façon, vous auriez les deux variantes, une pour faire des maths, et une pour les humains à comprendre.

0

Vous avez trouvé le perl?

human_time=$(perl -e 'print scalar gmtime(shift)' $startTime)