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

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

Re: [shell-script] 1 script rodando, junto com 3 em background


From: Julio C. Neves
Subject: Re: [shell-script] 1 script rodando, junto com 3 em background
Date: Wed, 5 Mar 2008 17:03:39 -0300

Use named pipes e mande a saida dos escripts para esses caras.

Antes faça:

$ mkfifo fifo1 fifo2 fifo3

O scritp 1 será:

#!/bin/bash
clear
read -p "Infome um número de 1 a 4" numero
echo $numero > pipe1

O segundo será:

#!/bin/bash
while true
do
    case $(cat pipe1) in
        1) echo a;;
        2) echo b;;
        3) echo c;;
        4) echo d;;
        *) break
    esac > pipe2
done

O terceiro passará a saída para pipe3, que será lido pelo quarto. Estude
como os named pipes trabalham lendo isto
aqui<http://twiki.softwarelivre.org/bin/view/TWikiBar/TWikiBarPapo011#Named_Pipes>
.

Primeiramente coloque os scripts em background fazendo:

$ ./script2.sh &
$ ./script3.sh &
$ ./script4.sh &

Depois vc executa o primeiro

$ ./script1.sh

Do jeito que fiz, qdo vc escrever um número maior que 4 o
script2.shmorrerá. Faça da mesma forma para o 3 e o 4, que eles
atuarão como se fossem
daemons e a cada vez que vc executar o um, os 3 trabalharão em silêncio.

Abração,
Julio



Abraços,
Julio





Em 05/03/08, sieg_diones <address@hidden> escreveu:
>
>   Amigos shelleiros boa tarde,
>
> estou com um pequeno problema aqui, sao 4 scripts simples, porém nao
> consigo fazer o que eu to precisando, vamos lá:
>
> esse é o primeiro script ele apenas receberá um numero que seja de
> 1 a 4.
>
> #---ScriptPrincipal.sh
> #!/bin/bash
> clear
> echo "Infome um número de 1 a 4"
> read numero
>
> esse segundo script trabalhará em background, ele receberá o numero
> digitado no script anterior e irá fazer uma comparação trocando - o
> por uma letra corresponde:
>
> #---ScriptSecundario.sh
> #!/bin/bash
> clear
> if [ $numero = 1 ]; then
> temp = a
> fi
> if [ $numero = 2 ]; then
> temp = b
> fi
> if [ $numero = 3 ]; then
> temp = c
> fi
> if [ $numero = 4 ]; then
> temp = d
> fi
>
>
> esse terceiro script também terá que trabalhar em background, ele
> receberá a letra do script anterior e comparará com uma das
> comparações presentes:
>
> #---ScriptTerceiro.sh
> #!/bin/bash
> clear
> if [ $temp = 'a' ]; then
> temp1 = 1*1
> fi
> if [ $temp = 'b' ]; then
> temp1 = 2*2
> fi
> if [ $temp = 'c' ]; then
> temp1 = 3*3
> fi
> if [ $tem = 'd' ]; then
> temp1 = 4*4
> fi
>
>
> esse quarto script também terá que trabalhar em background, ele
> receberá o quadrado do script anterior e irá somá-lo a mais 1, e em
> seguida ele imprime na tela os dados:
>
> #---ScriptQuarto.sh
> #!/bin/bash
> clear
> if [ $temp1 = 1 ]; then
> temp2 = temp1 + 1
> fi
> if [ $temp1 = 4 ]; then
> temp2 = temp1 +1
> fi
> if [ $temp1 = 9 ] ; then
> temp2 = temp1 +1
> fi
> if [ $temp1 = 16 ]; then
> temp2 = temp1 +1
> fi
> echo "$temp2 $temp1 $temp $numero"
>
> minha duvida: como que eu coloco esses três ultimos scripts
> trabalhando em background? e como tb faço para que cada um dos três
> receberem os dados dos scripts anteriores?
> ou seja quando eu for digitar aki o numero no primeiro script e
> quando eu pressionar a tecla enter, ele terá que me mostrar na tela
> ja o echo do ultimo script.
> to meio perdido nessas partes.
>
>  
>



-- 
Abraços,
Julio


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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