Эта команда делает то, что вы хотите в OSX:
VALUE1=$(date -j -f %Y_%m_%d +%d-%b-%Y "$VALUE")
Если вы используете другой вариант Unix, комбинация параметров для date
, которая вам требуется, может отличаться.Примечание %
хорошо стандартизировано (см. man strftime
), но возможности команды date
не таковы.
GNU coreutils date
(то, что вы получаете в Linux, и которое также может бытьчто-то скрывается в вашей системе «SunOS» (я сомневаюсь, что вы на самом деле означаете «SunOS», Sun Microsystems не называет свой вариант Unix, который около пятнадцати лет, но даже в этом случае материал в /usr/bin
все еще невероятно устаревший мусор) - посмотрите в /usr/local
и во всех подкаталогах /opt
- также можно сделать это, но вы должны предварительно обработать ввод:
VALUE1=$(date -d $(echo $VALUE | tr _ -) +%d-%b-%Y)
Этот может также работают, в зависимости от того, какая именно у вас оболочка:
VALUE1=$(date -d ${VALUE//_/-} +%d-%b-%Y)