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

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

RES: [shell-script] Escopo no bash


From: Monteiro Andre (LBR)
Subject: RES: [shell-script] Escopo no bash
Date: Thu, 4 Oct 2001 07:33:09 -0300

Olá

Trabalho com o HP-UX, e tenho vários scripts para facilitar minha vida. Um
deles tenta atualizar um programa permanentemente, de maneira que, se tiver
alguém usando, ele continua tentando. Se não tiver ninguém usando (ou se
quem estava usando saiu do programa), o script copia o executável para o
diretório de destino. No final, ele informa o número de tentativas. Pode ser
que não funcione em bash (foi escrito em sh), mas acredito que funcione sim.
Aí está

#!/usr/bin/sh
tenta=600

if [ -z "$1" ] ; then
   echo Sintaxe: $0 arquivo
   exit 2
fi

if [ ! -f $1 ] ; then
   echo $1 nao existe!
   exit 2
fi

if [ ! -z "$2" ] ; then
        tenta=$2
fi

A=0

echo Tentando mover $1.

while [ ! `ps -ef | fgrep $1 | fgrep -v "grep" | wc -l` -eq 0 ] ; do

   if [ $A -eq $tenta ]; then
      echo $A tentativas. `ps -ef | fgrep $1 | fgrep -v "grep" | wc -l` \
                                          usuario\(s\)
      exit 1
   fi

   A=`expr $A + 1`
   sleep 1

done

mv /pdo/$1 /exec

echo $1 Copiado apos `expr $A + 1` tentativas. 1>&2

exit 0


Espero que tenha ajudado


Andre Luis Arantes Monteiro



De: Horacio Fernandes [SMTP:address@hidden]

Olá pessoal,
    Estou com uma dúvida simples no escopo de variáveis do bash.
    Gostaria de saber como mandar valores via variáveis de dentro de um
while para fora dele. Como exemplo eu criei o script simples abaixo:

#!/bin/bash

Contador=0
who | while read Linha; do
    echo ":: $Linha :: $Contador"
    Contador=$[ $Contador + 1 ]
done
echo "Total: $Contador"

    Eu queria que ele retornasse o número total de pessoas logadas, mas ele
não faz isso, retornando:

:: root     tty1     Oct 10 06:23 :: 0
:: root     tty2     Oct 10 06:23 :: 1
:: root     tty3     Oct 10 06:26 :: 2
:: root     tty4     Oct 10 06:26 :: 3
:: root     tty5     Oct 10 06:26 :: 4
Total: 0

    Note como a variável realmente é incrementada dentro o while, mas quando
sai dele, perde-se o valor.
    Sei que existem outros meios de se verificar quantas pessoas estão
logadas. O script acima é só um pequeno exemplo da minha dúvida.

    Muito obrigado desde já.
Horácio Fernandes


reply via email to

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