[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- RES: [shell-script] Escopo no bash,
Monteiro Andre (LBR) <=