The best answers to the question “YYYY-MM-DD format date in shell script” in the category Dev.
I tried using
$(date) in my bash shell script, however, I want the date in
How do I get this?
%F option is an alias for
In bash (>=4.2) it is preferable to use printf’s built-in date formatter (part of bash) rather than the external
date (usually GNU date).
# put current date as yyyy-mm-dd in $date # -1 -> explicit current date, bash >=4.3 defaults to current time if not provided # -2 -> start time for shell printf -v date '%(%Y-%m-%d)T\n' -1 # put current date as yyyy-mm-dd HH:MM:SS in $date printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1 # to print directly remove -v flag, as such: printf '%(%Y-%m-%d)T\n' -1 # -> current date printed to terminal
In bash (<4.2):
# put current date as yyyy-mm-dd in $date date=$(date '+%Y-%m-%d') # put current date as yyyy-mm-dd HH:MM:SS in $date date=$(date '+%Y-%m-%d %H:%M:%S') # print current date directly echo $(date '+%Y-%m-%d')
Other available date formats can be viewed from the date man pages (for external non-bash specific command):
You’re looking for ISO 8601 standard date format, so if you have GNU date (or any date command more modern than 1988) just do:
You can do something like this:
$ date +'%Y-%m-%d'