[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]