O motivo pelo qual seu exemplo falha é por causa da maneira como a divisão de palavras do shell funciona. Quando você executa "$($nice_date)"
, o shell está executando o comando date
com dois argumentos, "+%Y-%m-%d"
e "%H:%M:%S"
. Isso falha porque a string de formato para data deve ser um único argumento.
A melhor maneira de fazer isso é usar uma função em vez de armazenar o comando em uma variável:
format_date() {
# echo is not needed
date "+%Y-%m-%d %H:%M:%S" "$1"
}
format_date
format_date "2015-09-17 16:51:58"
echo "$(format_date) [WARNING] etc etc"
Se você realmente quisesse armazenar o comando em uma variável, você pode usar uma matriz:
nice_date=(date "+%Y-%m-%d %H:%M:%S")
# again echo not needed
"${nice_date[@]}" "2015-09-17 16:51:58"
Para mais detalhes sobre os casos complexos de armazenamento de um comando em uma variável, veja BashFAQ 050 .