Bash

如何grep儲存在變數中的值

  • March 19, 2021

我正在編寫一個 bash 腳本,其中我將目前日期儲存在一個變數中,然後我正在對該變數進行 greping。問題是它不起作用

currentdate= $(date +%b\ %d)
echo "$currentdate"
last |grep -E '$currentdate'>> /usr/IBM/HTTPServer7/logs/alert/users.txt

users.txt顯示為空。如果我手動編寫目前日期,那麼它可以工作。我究竟做錯了什麼?

除了引號之外,您還需要考慮last命令使用的日期格式,如下所示:

Dec  3    # Note the padding to the left of '3'.
Nov 23

這需要稍微不同的 date 命令:

date "+%b %_d"
Dec  4

下劃線指示date用空格填充欄位。您也可以使用 %e 作為替代方案。

將這些放在一起,您可以修改腳本,如下所示:

currentdate=$(date "+%b %_d")
last | grep "$currentdate" >> /usr/IBM/HTTPServer7/logs/alert/users.txt

引用自:https://unix.stackexchange.com/questions/485827