web-dev-qa-db-fra.com

Convertir la chaîne d'entrée en date dans le script shell

Mon script shell:

#!/bin/bash
echo "$1";
startd=$(date -d "$1" +"%Y%m%d"); 
echo "$startd";

Ma commande:

Sudo ./test.sh "20151010"

Le résultat:

20151010 
20150213

il est imprimé la date d'aujourd'hui au lieu d'imprimer la date de saisie de toute idée?

5
PUG

La version OS X de date utilise le -f Option pour analyser une date/heure formatée:

date -j -f '%Y%m%d' "$1" +'%Y%m%d'

Les -j Option le fait imprimer l'heure, pas essayer de définir l'horloge système. Donc, le script complet serait:

#!/bin/bash
echo "$1";
startd=$(date -j -f '%Y%m%d' "$1" +'%Y%m%d'); 
echo "$startd";

Voici une transcription:

$ ./testdate.sh 20151010
20151010
20151010
7
Barmar