我需要在后台运行一个程序。我知道在命令后使用“&”会在后台运行该命令。
在以下脚本中:
#!/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)指定为参数或通过其他方式指定?
答案1
如果您的脚本被调用,比如说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' &
答案2
另一种可能性是将这些变量作为参数传递给脚本。在脚本中,而不是
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
,等等。