как сохранить три ввода в файл с тем же именем, что и у пользователя?

как сохранить три ввода в файл с тем же именем, что и у пользователя?
#!/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, обычно устанавливается на ваше имя пользователя оболочкой или системой).

Если вы хотите использовать фамилию, прочитанную сценарием, то измените строку

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при печати переменных строк.

Связанный контент