Передача аргументов в интерактивный скрипт, который будет работать в фоновом режиме

Мне нужно запустить программу в фоновом режиме. Я знаю, что использование «&» после команды запускает команду в фоновом режиме.

В следующем сценарии:

#!/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

У меня есть несколько данных, которые я получаю от пользователя. Есть ли способ, которым я могу запустить программу в фоновом режиме, и при вызове программы я также могу указать необходимые данные (например, nano, sec, i) в качестве аргументов или каким-либо другим способом?

4
задан 27 March 2014 в 03:49

2 ответа

Если Ваш сценарий называют, позвольте, говорят test.sh, то Вы можете, например:

  • передают Ваш вход по каналу:

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

    , где 1, 2, и 3 значения для $nano, $sec и, соответственно $i.

  • берут вход из файла:

    test.sh < arguments.txt &
    
  • используют здесь строка:

    test.sh <<<  
1\n2\n3\n' &
0
ответ дан 27 March 2014 в 03:49

Другая возможность состоит в том, чтобы передать те переменные как аргументы Вашему сценарию. В Вашем сценарии, вместо

read nano
read sec
read i

... можно использовать:

nano=$1
sec=$2
i=$3

Переменные $1, $2, $3, и т.д. соответствуйте первому, второму, третьему, и т.д. аргументы на командной строке. Таким образом можно назвать сценарий как:

test.sh foo bar buz &

В сценарии, $1 будет содержать foo, $2 будет содержать bar, $3 будет содержать buz, и т.д.

1
ответ дан 27 March 2014 в 03:49

Другие вопросы по тегам:

Похожие вопросы: