Aqui está uma solução possível. Funciona assim:
$ ./format_date.sh 092533
2018-05-17 09:25:33
#!/bin/bash
format_time(){
point=0
while [ "$point" -le "${#1}" ];
do
string=$string"${1:$point:2}"
if [ "$point" -lt "$((${#1}-2))" ]
then
string=$string":"
fi
point=$((point+2))
done
echo "$string"
}
echo "$(date +'%Y-%m-%d')" "$( format_time "$1" )"
Isso aproveita a substituição de parâmetro, típica de bash
e ksh
, portanto, isso se ajusta às suas tags de pergunta, mas não é adequado para POSIX /bin/sh
, pois o ${variable:position:offset}
não funciona no POSIX /bin/sh
.