簡體   English   中英

如何從腳本創建簡單的日志文件

[英]How To Create Simple Log File From Script

我正在嘗試創建一個名為“users.txt”的簡單日志文件,其中包含輸入的用戶名、全名和主目錄。 我還想包括腳本最初運行的時間。

有什么建議?

腳本名稱叫做 catbash.sh

我嘗試過諸如 catbash.sh > user.txt 之類的東西

但我不知道如何獲取特定信息等。

clear
LOGFILE=/home/student/gg193/FileTypes/TextFiles/ShellScripts/user.txt

read -p "What is your username?" username
read -p "May I know your name please? " name surname

echo "$(date) $username $name $surname $LOGFILE" >> $LOGFILE

TIME=$(date "+%H")

if [ $TIME -ge 0 -a $TIME -lt 12 ]
then
        echo "\nGood Morning, $surname"
elif [ $TIME -ge 12 -a $TIME -lt 18 ] 
then
        echo "\nGood afternoon $surname"
else 
        echo "\nGood evening $surname"
fi

echo "1. nonblank\n2. number\n3. ends\n4. nends\n"

while : 
do
    read INPUT_STRING
    case $INPUT_STRING in

        nonblank)
            NonEmptyLine=$(cat catbash.sh | sed '/^\s*$/d' | wc -l)
            echo "\nNumber of Non-Empty Lines are:" $NonEmptyLine
            break
            ;;
        number)
            EmptyLine=$(grep -cvP '\S' catbash.sh)
            echo "\nNumber of Empty Lines are:" $EmptyLine
            break
            ;;
        ends)
            echo "================================================================================="
            sed 's/$/$/' catbash.sh
            echo "================================================================================="
            break
            ;;
        nends)
            NonEmptyLine=$(cat catbash.sh | sed '/^\s*$/d' | wc -l)
                        echo "\nNumber of Non-Empty Lines are:" $NonEmptyLine
            EmptyLine=$(grep -cvP '\S' catbash.sh)
                        echo "\nNumber of Empty Lines are:" $EmptyLine
            echo "================================================================================="
            sed 's/$/$/' catbash.sh
            echo "================================================================================="
            break
            ;;
        *)
            echo "\nSorry, I don't understand"
            ;;
    esac
done

DURATION=$(ps -o etime= -p "$$")
echo "\nAmount of time that has passed since the script was initially executed:" $DURATION

echo "\nThanks for using catbash.sh!"

您必須從 sh 腳本內部進行日志記錄。 例如,您可以在終端上echo顯您想要的信息(您已經在做),然后附加| tee -a $LOGFILE | tee -a $LOGFILE (在頂部定義 LOGFILE,因此如果您需要不同的文件名/位置,則只需更改一次)。

作為進一步的改進,您可以考慮定義自己的記錄器功能,甚至探索現有的記錄器功能。 例如,一個更簡單的記錄器 func 可能需要 2 個參數 - 消息、文件名。 消息本身可以根據需要由用戶名、日期/時間戳等組成。

根據您問題中當前的信息,這是我能給出的最佳指示。

暫無
暫無

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

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