批处理脚本中的Perl脚本会提示用户输入。如何在批处理脚本中自动解析该输入?

时间:2019-10-02 10:29:40

标签: bash perl unix

我有许多文件夹,并且每个文件夹中都需要运行一个Perl脚本。我在批处理文件中创建一个循环,并在每个文件夹中执行Perl。问题是Perl脚本提示用户输入并停止循环。如何自动将输入解析为Perl脚本,而不会中断循环以请求用户输入?

对不起,如果以前已经回答过,我对stackoverflow和批处理脚本都是新手。

for (( i = 0; i <= 6; i++ ))      
do

    for (( j = 0 ; j <= 6; j++ )) 
    do
          cd $i$j*
          ~/scripts/script.pl log.out
          #This perl script requires user input, how do I input it here automatically.
          cd ..

done
done

2 个答案:

答案 0 :(得分:0)

您可以使用here-docs生成输入:

$ read -p 'Does this really work? (Y/N) ' OK <<-EOF
Y
EOF
$ echo $OK
Y

答案 1 :(得分:0)

如果输入很小,则可以内联到脚本中,并使用<<构造将其提供给perl程序。否则,请考虑将输入放入文件中,并使用<。

重定向标准输入。
for (( i = 0; i <= 6; i++ ))      
do

    for (( j = 0 ; j <= 6; j++ )) 
    do
          cd $i$j*
          ~/scripts/script.pl log.out <<__INPUT__
Your Input here
multiple lines are OK
__INPUT__
          #This perl script requires user input, how do I input it here automatically.
          cd ..

    done
done