#!/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 $TITTLE
e $SURNAME
em $ID
um 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 \n
como '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 $USER
será 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 echo
para um arquivo cujo nome é dado por qualquer nome que o usuário digitou para o sobrenome, adicionado .txt
ao 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 printf
em vez echo
de imprimir strings variáveis.