如何將三個輸入儲存到與使用者同名的檔案中?

如何將三個輸入儲存到與使用者同名的檔案中?
#!/bin/bash                                                                     
while :                                                                         
        do                                                                      
        echo "Please enter your tittle:"                                        
        read TITTLE                                                             
        echo "Please enter your surname:"                                       
        read SURNAME                                                            
        echo "Please enter your ID No."                                         
        read ID                                                                 

        if [ "$TITTLE" = "" ] || [ "${TITTLE//[!0-9]}" != "" ];                 
        then                                                                    
        echo "Enter your valid tittle without special characters."              
        echo "Please try again."                                                
        continue                                                                  
        fi                                                                      

        if [ "$SURNAME" = "" ] || [ "${SURNAME//[!0-9]}" != "" ];               
        then                                                                    
        echo "Enter your valid surname without special characters."             
        echo "Please try again."                                                
        continue                                                                  
        fi                                                                      

        if [ "$ID" = "" ] || [ "${ID//[0-9]}" != "" ];                          
        then                                                                    
        echo "Enter your valid ID No. without special characters."              
        echo "Please try again"

        else                                                                    
        echo "Thank you" $TITTLE $SURNAME                                       
        break                                                                   
fi                                                                              
done

答案1

假設:$SURNAME是用戶名

$TITTLE若要將、$SURNAME和 的內容寫入以 的$ID內容命名的文件$SURNAME,您可以如下修改程式碼:

...
    else
    echo "Thank you $TITTLE $SURNAME, your information will be stored in \"$SURNAME.txt\""
    echo -e "$TITTLE\n$SURNAME\n$ID" > "$SURNAME.txt"
    break
...

其中 -e 允許 echo 識別\n為「換行符」。

答案2

正如我在相關問題的回答中所寫的“驗證 3 個輸入的腳本",腳本的輸出可以透過以下方式重新導向

$ ./script.sh >"$USER.txt"

其中$USER將替換為您的使用者名稱(此變數以及$LOGNAME,通常由 shell 或系統設定為您的使用者名稱)。

如果您想使用腳本讀取的姓氏,則更改該行

echo "Thank you" $TITTLE $SURNAME          

進入

echo "Thank you $TITTLE $SURNAME" >"$SURNAME.txt"

這會將結果重定向echo到一個文件,該文件的名稱由使用者輸入的姓氏給出,並.txt添加到文件名稱的末尾(顯然,這是可選的)。請注意,不會檢查這是否會覆蓋現有文件。

若要將其輸出到終端,請使用以下命令複製資料tee

echo "Thank you $TITTLE $SURNAME" | tee "$SURNAME.txt"

要將所有三位資料輸出到文件,請使用,例如,

{
    printf 'ID = %s\n' "$ID"
    printf 'surname = %s\n' "$SURNAME"
    printf 'title = %s\s' "$TITTLE"
} >"$SURNAME.txt"

像這樣將一組命令分組在大括號內,讓您在單一重定向中重定向該群組的所有輸出。

看 ”為什麼 printf 比 echo 更好?" 這就是為什麼我傾向於在列印變數字串時使用printf而不是使用。echo

相關內容