
Estou escrevendo um script bash simples e, de acordo com as especificações da minha tarefa, ele deve ser encerrado em ctrl-d. No entanto, isso não acontece, apenas para de ler a entrada atual e começa a ler a próxima entrada. Como posso consertar isso? Aqui está meu roteiro:
while true ; do
echo Please enter your full name:
read fullName
echo Please enter your street addres:
read streetAddress
echo Please enter your zip code, city, and state in that order:
read zip city state
echo $fullName > Name.txt
echo "$streetAddress $city $state $zip" >> Locations.txt
echo $fullName >> "$zip".txt
echo $streetAddress >> "$zip".txt
echo "$city $state $zip" >> "$zip".txt
echo '' >> "$zip".txt
done
Responder1
Você pode verificar o código de saída do read
comando.
if [[ $? != 0 ]]; then
echo "Exiting"
exit 1
fi
Responder2
Veja como consegui o comportamento desejado:
notFinished=true
while $notFinished ; do
echo Please enter your full name:
while read fullName ; do
echo Please enter your street addres:
read streetAddress
echo Please enter your zip code, city, and state in that order:
read zip city state
echo $fullName > Name.txt
echo "$streetAddress $city $state $zip" >> Locations.txt
echo $fullName >> "$zip".txt
echo $streetAddress >> "$zip".txt
echo "$city $state $zip" >> "$zip".txt
echo '' >> "$zip".txt
continue 2
done
notFinished=false
done
Agora, quando pressiono control-d, o aplicativo sai conforme desejado.