我嘗試在我的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
printf
比date
更快,因為它是乙個內建的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。陣列定義 說明 陣列元素的間隔符可以是空...