shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] abs-guide - Example 11-17. while loop with multiple c


From: Julio C. Neves
Subject: Re: [shell-script] abs-guide - Example 11-17. while loop with multiple conditions
Date: Tue, 21 Oct 2014 15:14:09 -0200

O while executa o loop entre o do e o done enquanto o cmd a sua frente for bem sucedido. Nesse caso ele usou um bloco de cmds, onde os 3 primeiros cmds sempre serão bem sucedidos:
echo "previous-variable = $previous"
echo
previous=$var1

restando somente o último ([ "$var1" != end ]) que pode ser bem ou mal sucedido.

Se pode inserir um monte de echo ou de atribuição nesse bloco que o prog rodará ok, mas se vc colocar apenas unzinho após o test, seu prog não sairá mais do loop.

Experimente fazer:
#!/bin/bash

var1=unset
previous=$var1

while echo "previous-variable = $previous"
echo
previous=$var1
true
:
echo continuo enchendo linquiça
[ "$var1" != end ] # Keeps track of what $var1 was previously.
# Four conditions on *while*, but only the final one controls loop.
# The *last* exit status is the one that counts.
do
echo "Input variable #1 (end to exit) "
read var1
echo "variable #1 = $var1"
done

# Try to figure out how this all works.
# It's a wee bit tricky.

exit 0

e vc verá que o prg continua funcionando.

Não é a mesma coisa, mas para ter certeza que seria informado uma data ao zenity, fiz o código a seguir:

until data="" --calendar                  \
    --title "Datas dos vôos"                    \
    --text "Escolha uma data para o vôo de ida" \
    --day $(date +%_d)                          \
    --month $(date +%_m)                        \
    --year $(date +%Y))
do
    :
done

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 10 a 14/11
São Paulo 4Linux 24 a 28/11
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 21 de outubro de 2014 14:26, Herbert Parentes Fortes Neto address@hidden [shell-script] <address@hidden> escreveu:
 

Olá,

estou lendo o abs-guide e lá tem o seguinte exemplo:
------------------------------------------------------
#!/bin/bash

var1=unset
previous=$var1

while echo "previous-variable = $previous"
echo
previous=$var1
[ "$var1" != end ] # Keeps track of what $var1 was previously.
# Four conditions on *while*, but only the final one controls loop.
# The *last* exit status is the one that counts.
do
echo "Input variable #1 (end to exit) "
read var1
echo "variable #1 = $var1"
done

# Try to figure out how this all works.
# It's a wee bit tricky.

exit 0
-------------------------------------------------------

o while tem 4 condições, mas como o comentário diz apenas o último
'exit status' é o que conta. Pergunta o por quê.

É pelo mesmo motivo que o último comando de um script é o que vale
como 'exit status'?

obrigado,
--
Herbert Parentes Fortes Neto (hpfn)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]