向使用“read”而不是$#的bash脚本提供参数

一个bash脚本是由系统pipe理员提供给我的,需要我input三个值。 这些值是使用“read”读取的,而不是直接从命令行读取。

echo "Enter value:" read myValue echo "Enter value 2:" read myOtherValue 

我要input的三个值是可以预测的,我需要经常运行这个脚本,所以我想将它自动化。 然而,只是在命令行中用参数执行脚本不起作用。

 ./script.sh myValue myOtherValue 

我可以提供第一个值,如果我呼应它,然后pipe它的脚本,但只适用于第一个参数。 我不知道如何以这种方式通过其余的人。

 echo "myValue" | ./script.sh 

我没有权限修改脚本来读取参数。

有任何想法吗?

如果您真的无法将此脚本复制到您的主文件夹并进行修改以适应您的需求,则应该考虑期望。 期望能以自动化的方式读/写stdin / stdout到一个程序。

本指南看起来不错: http : //www.ftlinuxcourse.com/FTLinuxCourse_Complete-2004/FTLinuxCourse/en/sysadm/chap5_3.html

如果input的数量是静态的,你可以使用here文件:

 cat <<FIN | ./script.sh value1 value2 FIN 
 echo -e "MyValue\nMyOtherValue" | ./script.sh 

Gerald Combs的答案类似,您可以使用stream程replace和redirect:

 ./script.sh < <(echo -e "myValue\nmyOtherValue") 

要么

 ./script.sh < <(echo "myValue myOtherValue") 

要么

 ./script.sh < <(cat <<EOF myValue myOtherValue EOF ) 

甚至:

 ./script.sh < <(echo "myValue"; echo "myOtherValue") 

在哪里,而不是两个“回声”,你可能有两个不同的命令产生你需要input到脚本的输出。