簡體   English   中英

bash echo 時間日期格式

[英]bash echo time date format

我已經測試了我需要的格式,但是我無法獲得回聲輸出,嘗試將引號放在不同的位置。

[root@]# date '+%B %V %T.%3N:'
July 29 21:01:24.766:
echo 'date ’+%B %V %T.%3N:’ %LINK-3-UPDOWN: Interface Port-channel1, changed state to up'

預期產出

July 29 21:01:24.766: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up'

你可以做:

tm=$(date '+%B %V %T.%3N:')
echo "${tm} %LINK-3-UPDOWN: Interface Port-channel1, changed state to up"

印刷:

July 29 09:22:23.3N: %LINK-3-UPDOWN: Interface Port-channel1, changed state to up

注意雙"與單' 。只有雙引號中的字符串會在 shell 中插入:

bash-5.1$ s1='hello'
bash-5.1$ s2='there'
bash-5.1$ echo "${s1} ${s2}"
hello there

對比:

bash-5.1$ echo '${s1} ${s2}'
${s1} ${s2}

如果你想在一行中完成整個事情:

echo "$(date '+%B %V %T.%3N:') %LINK-3-UPDOWN: Interface Port-channel1, changed state to up"

或修改您的date格式字符串:

date '+%B %V %T.%3N: %%LINK-3-UPDOWN: Interface Port-channel1, changed state to up'

你實際上並不需要echo date寫一切:

$ date '+%B %V %T.%3N %%LINK-3-UPDOWN: Interface Port-channel1, changed state to up'
July 29 09:34:15.874 %LINK-3-UPDOWN: Interface Port-channel1, changed state to up

從技術上講,如果您願意犧牲時間戳中的幾分之一秒,您甚至不需要date

$ printf '%(%B %V %T)T %s\n' -1 "%LINK-3-UPDOWN: Interface Port-channel1, changed state to up"
July 29 09:36:40 %LINK-3-UPDOWN: Interface Port-channel1, changed state to up

bash在它的printf實現中不支持%N%(...)T根據...格式化整數秒, -1表示當前時間。)

單引號內的字符始終是靜態字符串。 如果要執行 shell 命令,則需要命令替換,通常在雙引號內:

echo "$(date ’+%B %V %T.%3N:’) %LINK-3-UPDOWN: Interface Port-channel1, changed state to up"

但是,這基本上只是echo無用使用

date ’+%B %V %T.%3N: %%LINK-3-UPDOWN: Interface Port-channel1, changed state to up'

請注意您需要如何將date格式字符串中的任何文字%字符加倍。

暫無
暫無

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

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