era justamente o que eu precisava, funcionou que é uma maravilha, vo estudar o link que me passou. ----- Original Message ----- From: Julio C. Neves To: [email protected] Sent: Wednesday, March 05, 2008 5:03 PM Subject: Re: [shell-script] 1 script rodando, junto com 3 em background
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 <[EMAIL PROTECTED]> 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] [As partes desta mensagem que não continham texto foram removidas]
