Shell

迴聲前的時間戳

  • April 7, 2022

有沒有更好的方法在 前面創建時間戳echo

目前我這樣做:

#!/bin/sh

if mount | grep -q /mnt/usb; then
       echo `date +%R\ ` "usb device already mounted"
else
       echo `date +%R\ ` "mounting usb device..."
       mount -t msdosfs /dev/da0s1 /mnt/usb

       if mount | grep -q /mnt/usb; then
               echo `date +%R\ ` "usb device successfully mounted"
       fi
fi

輸出應如下所示:

10:36 usb device already mounted

您可以跳過echo, 並將消息放入date命令中。date允許您將文本插入格式字元串(+%R在您的範例中)。例如:

date +"%R usb device already mounted"

為方便起見,您也可以將其放入 shell 函式中。例如:

echo_time() {
   date +"%R $*"
}

echo_time "usb device already mounted"

如果您要多次重複使用它,這是一種清潔劑。

這是一種更健壯和可移植(POSIX)的方法,特別是允許%作為參數保持未處理的方法:

echo_time() {
   date +"%H:%M $(printf "%s " "$@" | sed 's/%/%%/g')"
}

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