簡體   English   中英

關於在Linux Shell腳本中打印格式化的Datetime

[英]About Print formated Datetime in linux shell scripts

我在linux shell中鍵入:date +“%y-%m-%d%H:%M:%S”后,我得到了正確的結果,例如:14-09-26 10:47:28。

但是,當我想在shell腳本中獲取結果時,出現錯誤:“日期:非法時間格式”,為什么?

#!/bin/sh

STR='date +"%y-%m-%d %H:%M:%S"'

echo "`$STR`"

問題在於:

#!/bin/sh

STR='date +"%y-%m-%d %H:%M:%S"'

echo "`$STR`"

當在echo命令中執行字符串時, date命令將看到三個參數:

date
+%y-%m-%d
%H:%M:%S

它試圖將%H:%M:%S為日期/時間,格式為:

[[[mm]dd]HH]MM[[cc]yy][.ss]]

要么:

mmddhhmm[[cc]yy]

要么:

[MMDDhhmm[[CC]YY][.ss]]

(第一個來自Mac OS X date ,第二個來自POSIX,第三個來自GNU date )。 在這些字母中,字母對表示要設置為時間的日期的組成部分。 由於%H:%M:%S字符串不包含數字,因此它是無效的日期格式。

您如何解決這個問題?

它部分取決於/bin/sh是Bash,Korn Shell,Dash,Bourne Shell還是其他外殼。

除最舊的Bourne外殼外,最簡單的解決方案應能在所有外殼中使用,即創建一個函數:

dt() { date +'%Y-%m-%d %H:%M:%S'; }

然后,您可以使用:

echo "$(dt)"

優先使用$(…)表示法而不是反引號。

注意,我拒絕使用%y 我記得Y2K的錯誤,即使您還太小而無法參與補救工作。

另一種技術要求支持數組(Bash,Korn shell,但不支持Dash或Bourne):

STR=( date +"%Y-%m-%d %H:%M:%S" )

echo "$( "${STR[@]}" )"

或者,更簡單地說:

"${STR[@]}"

嘗試自己執行任務。

 $ #!/bin/sh

   $ STR=`date +"%y-%m-%d %H:%M:%S"`

   $ echo $STR
  14-09-26 11:40:06

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM