Se $x contiver 14/Jul/2015 , use isso:
date -d "${x//\//-}" '+%d-%m-%Y'
imprimirá:
14-07-2015
A date utillity não entende a string separada por barra, então você precisa removê-la e substituí-la por um traço ( - ).
Como posso converter 14/Jul/2015 em 14-08-2015 ?
Ele está dizendo invalid date format por causa do elemento Jul , mas se eu colocar 07 , ele funcionará bem.
Eu tentei isso:
echo "Please enter the date: "
read X (here X is 14/Jul/2015)
a= date --date=$X '+%d-%b-%y'
echo "$a"
Se $x contiver 14/Jul/2015 , use isso:
date -d "${x//\//-}" '+%d-%m-%Y'
imprimirá:
14-07-2015
A date utillity não entende a string separada por barra, então você precisa removê-la e substituí-la por um traço ( - ).
Seu problema não é com Jul , mas com / , portanto, remova-os usando, por exemplo, o mecanismo de substituição de parâmetro:
echo "Please enter the date: "
read X
a=$(date --date="${X//\//-}" '+%d-%b-%y')
echo "$a"
Por favor, note que sua atribuição de variável também estava errada (não deve haver espaço após = ) e a substituição de comando deve estar entre $() .
Tags command-line date