O script Bash não sairá na ctrl d

0

Estou escrevendo um script bash simples e, de acordo com minhas especificações de atribuição, ele deve terminar em ctrl-d. No entanto, não faz isso, ele simplesmente pára de ler a entrada atual e começa a ler a próxima entrada. Como posso consertar isso? Aqui está meu script:

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
    
por OpenSrcFTW 25.01.2014 / 19:38

2 respostas

0

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 o controle-d, o aplicativo sai exatamente como desejado.

    
por 26.01.2014 / 22:14
0

Você pode verificar o código de saída do comando read .

if [[ $? != 0 ]]; then
    echo "Exiting"
    exit 1
fi
    
por 25.01.2014 / 19:59

Tags