Converter string de entrada para data no shell script

2

Meu script de shell:

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

Meu comando:

sudo ./test.sh "20151010"

A saída:

20151010 
20150213

ele imprimiu a data de hoje em vez de imprimir a data de entrada alguma idéia?

    
por PUG 14.02.2015 / 00:07

2 respostas

6

A versão do OS X de date usa a opção -f para analisar uma data / hora formatada:

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

A opção -j faz com que apenas imprima a hora, não tente definir o relógio do sistema. Então o roteiro completo seria:

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

Aqui está uma transcrição:

$ ./testdate.sh 20151010
20151010
20151010
    
por 14.02.2015 / 00:28
2

Se você estiver tentando formatar a data no OS X, tente isso:

date -j -f "%Y%m%d" "20151010"

Eu recebo a seguinte saída:

Sat Oct 10 17:27:28 CDT 2015
    
por 14.02.2015 / 00:28