将参数传递给将在后台运行的交互式脚本

将参数传递给将在后台运行的交互式脚本

我需要在后台运行一个程序。我知道在命令后使用“&”会在后台运行该命令。

在以下脚本中:

#!/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,等等。

相关内容