shell指令碼中的YYYY MM DD格式日期

2021-10-01 10:53:21 字數 2879 閱讀 5497

我嘗試在我的bash

shell指令碼中使用$(date),但我希望日期為yyyy-mm-dd格式。 我怎麼得到這個?

你可以這樣做:

$ date +'%y-%m-%d'
在bash(> = 4.2)中,最好使用printf的內建日期格式化程式(bash的一部分)而不是外部date(通常是gnu日期)。

因此:

# 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

在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')

可以從日期手冊頁檢視其他可用日期格式(對於外部非bash特定命令):

man date
嘗試:$(date +%f)

date -d '1 hour ago' '+%y-%m-%d'
輸出將是2015-06-14

如果您希望年份採用兩種數字格式,例如17而不是2017,請執行以下操作:

date=`date +%d-%m-%y`
使用最近的bash(版本≥4.2),您可以使用內建printf和格式修飾符%(strftime_format)t

$ printf '%(%y-%m-%d)t\n' -1  # get yyyy-mm-dd (-1 stands for "current time")

2017-11-10

$ printf '%(%f)t\n' -1 # synonym of the above

2017-11-10

$ printf -v date '%(%f)t' -1 # capture as var $date

printfdate更快,因為它是乙個內建的bash而date是乙個外部命令。

同樣,printf -v date ...date=$(printf ...)更快,因為它不需要分支子shell。

#!/bin/bash -e

x='2018-01-18 10:00:00'

a=$(date -d "$x")

b=$(date -d "$a 10 min" "+%y-%m-%d %h:%m:%s")

c=$(date -d "$b 10 min" "+%y-%m-%d %h:%m:%s")

#date -d "$a 30 min" "+%y-%m-%d %h:%m:%s"

echo entered date is $x

echo second date is $b

echo third date is $c

這裡x是使用的樣本日期然後示例顯示資料格式以及獲取日期比當前日期多10分鐘。

每當我有這樣的任務時,我最終會回歸

$ man strftime
提醒自己所有的可能性。

$(date +%f_%h-%m-%s)
可以用來刪除之間的冒號(:)

產量

2018-06-20_09-55-58
您可以將日期設定為環境變數,以後可以使用它

setenv date `date "+%y-%m-%d"`

echo "----------- $ -------------"

要麼

date =`date "+%y-%m-%d"`

echo "----------- $ -------------"

我使用$(date +"%y-%m-%d")$(date +"%y-%m-%d %t")和時間和小時。

我使用以下配方:

today=`date -i`

echo $today

檢視手冊頁的date,還有許多其他有用的選項:

man date

shell指令碼中的函式, shell中的陣列

示例1 bin bash 函式的使用 input input 1 a b root second fun.sh 1 a 3 fun.sh 示例2 bin bash 傳遞乙個引數給函式 input read p please input n input root second fun.sh pleas...

shell指令碼中的變數

1 在命令列中和指令碼中,變數定義得格式 name value 左右兩邊不能有空格,否則會當做命令來對待,輸出乙個command not found echo name echo 列印出變數,引用變數使用 name.2 單引號和雙引號 語法 和php中相同 雙引號仍然可以保有變數的內容,但單引號內僅...

shell指令碼中的陣列

以下命令,都是以陣列array 20150417 20150416 20150415 為例。注意bash中只支援一維陣列,沒有限定陣列的大小。類似與c語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。陣列定義 說明 陣列元素的間隔符可以是空...