Pablo, apesar da sua mensagem estar um pouco confusa, já que você escreveu uma coisa no script e outra no texto descrevendo seu problema, deixe-me ver se consigo ajudá-lo.
Estou assumindo que o que você escreveu é o que estava tentando fazer no script. Vamos lá. A condição do while deve ser TRUE para que o corpo seja executado. Tente utilizar: while test "$?" -ne 0 -o "$Xx" -le 3 Neste caso o while será executado se ("$?" -ne 0) ou ("$Xx" -le 3). Assim somente sairá do while se as duas forem falsas. Espero ter ajudado. Abraços, William Em 17/10/07, pablo oliveira <[EMAIL PROTECTED]> escreveu: > > > Ae galera, blz > > olha soh... to com um problema em um script com duas condições no while, > segue a parte que interessa: > > if [ $count -eq 0 ]; then > Xx=1 > # Rotina do mail > > SCfrom="[EMAIL PROTECTED] <dominio%40dominio.com.br>" > SCto="[EMAIL PROTECTED] <%24END%40torpedoemail.com.br>" # função > anterior define isso) > SCsubject="Host parado $HOSTS - `date +%d-%m-%y-%H:%M`" > SCserver="200.xxx.xxx.xxx" > SCbody=" Caro Administrador, o Host $HOSTS em $NOME esta sem comunicacao, > favor revisar!" > echo -e "From: $SCfrom \nSubject: $SCsubject \nTo: $SCto \n\n$SCbody\n\n" > | msmtp --host=$SCserver -f $SCfrom -- $SCto > > while test "$?" -ne 0 & "$Xx" -le 3 ; # tambem usei como "while [ "$?" -ne > 0 ] & [ "$Xx" -le 3 ];" > do > ## Rotina do mail > Xx=$((Xx+1)); > sleep 10 > SCfrom="[EMAIL PROTECTED] <dominio%40dominio.com.br>" > > SCto="[EMAIL PROTECTED] <%24END%40torpedoemail.com.br>" # função > anterior define isso) > > SCsubject="Host parado $HOSTS - `date +%d-%m-%y-%H:%M`" > > SCserver="200.xxx.xxx.xxx" > > SCbody=" Caro Administrador, o Host $HOSTS em $NOME esta sem comunicacao, > favor revisar!" > > echo -e "From: $SCfrom \nSubject: $SCsubject \nTo: > $SCto \n\n$SCbody\n\n" | msmtp --host=$SCserver -f $SCfrom -- $SCto > > done; > fi; > > limpei o que não interessava... mas o problema é o seguinte, na linha : > > while test "$?" -ne 0 & "$Xx" -le 3 ; # tambem usei como "while [ "$?" -ne > 0 ] & [ "$Xx" -le 3 ];" > > Se alguma das duas opões for diferente ele deveria passar o while, isnto é > se o $? for igual a zero ou se o $Xx for maior que 3. > > Mas enquanto as duas enquanto uma das duas opções é verdadeira ele fica no > loop até ambas serem falsas... alguem tem alguma idéia a respeito? > > OBS: preciso das duas condições. > > Pablo > > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para > armazenamento! > http://br.mail.yahoo.com/ > > [As partes desta mensagem que não continham texto foram removidas]