como faço para salvar três entradas em um arquivo com o mesmo nome do usuário?

como faço para salvar três entradas em um arquivo com o mesmo nome do usuário?
#!/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

Responder1

Suposição: $SURNAMEé o nome de usuário

Para escrever o conteúdo de $TITTLEe $SURNAMEem $IDum arquivo com o nome do conteúdo de $SURNAME, você pode modificar seu código da seguinte maneira:

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

onde -e permite que echo seja reconhecido \ncomo 'nova linha'.

Responder2

Como escrevi em minha resposta à pergunta relacionada "Script que valida 3 entradas", a saída do script pode ser redirecionada por

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

onde $USERserá substituído pelo seu nome de usuário (esta variável, assim como $LOGNAME, geralmente é definida como seu nome de usuário pelo shell ou sistema).

Se você quiser usar o sobrenome lido pelo script, altere a linha

echo "Thank you" $TITTLE $SURNAME          

em

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

Isso redirecionaria o resultado de echopara um arquivo cujo nome é dado por qualquer nome que o usuário digitou para o sobrenome, adicionado .txtao final do nome do arquivo (isso é opcional, obviamente). Observe que nenhuma verificação é feita para saber se isso substitui um arquivo existente.

Para também enviar isso para o terminal, duplique os dados com tee:

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

Para enviar todos os três bits de dados para o arquivo, use, por exemplo,

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

Agrupar um conjunto de comandos entre chaves como este permite redirecionar toda a saída do grupo em um único redirecionamento.

Ver "Por que printf é melhor que echo?"por que costumo usar printfem vez echode imprimir strings variáveis.

informação relacionada