Passando argumentos para um script interativo que será executado em segundo plano

3

Eu preciso executar um programa em segundo plano. Eu sei que usando '& amp;' depois que um comando executa o comando em segundo plano.

No seguinte script:

#!/bin/bash
echo amt of time delay nsec
read nano
echo amt of time delay in sec
read sec
echo no.of times
read i
while [ $i -ne 0 ]
do
./nanosleep $sec $nano
./schello
i=$[i-1]
done

Eu tenho alguns dados que recebo do usuário. Existe uma maneira de executar o programa em segundo plano e, ao chamar o programa, também posso especificar os dados necessários (como nano, sec, i) como argumentos ou de alguma outra forma?

    
por Bas 26.03.2014 / 12:54

2 respostas

5

Se o seu script for chamado, digamos test.sh , você pode, por exemplo:

  • canalize sua entrada:

    echo -e "1\n2\n3\n" | test.sh &
    

    em que 1 , 2 e 3 são os valores de $nano , $sec e, respectivamente $i .

  • pegue a entrada de um arquivo:

    test.sh < arguments.txt &
    
  • use uma string aqui:

    test.sh <<< $'1\n2\n3\n' &
    
por Radu Rădeanu 26.03.2014 / 13:15
1

Outra possibilidade é passar essas variáveis como argumentos para o seu script. No seu script, em vez de

read nano
read sec
read i

... você pode usar:

nano=
sec=
i=

As variáveis , , , etc. correspondem aos primeiro, segundo, terceiro, etc. argumentos na linha de comando. Assim, você pode chamar seu script como:

test.sh foo bar buz &

Dentro do script, conterá foo , conterá bar , conterá buz , etc.

    
por Malte Skoruppa 26.03.2014 / 13:30

Tags