bash - 强制 Bash 脚本等待等待输入的 Perl 脚本

标签 bash perl user-input

我有一个 Bash 脚本,它顺序运行一些从文件中读取的 Perl 脚本。这些脚本需要按 Enter 键才能继续。

奇怪的是,当我运行脚本时,它从不等待输入,而是继续运行。我假设 Bash 脚本中的某些内容被解释为 Enter 或其他一些按键并使 Perl 继续。

我确信有解决方案,但真的不知道要寻找什么。

我的 Bash 有一个 while 循环,它遍历 Perl 脚本列表(在 seqfile 中列出)

while read zeile; do
    if [[ ${datei:0:1} -ne 'p' ]]; then
        datei=${zeile:8}
    else
        datei=$zeile
    fi
    case ${zeile: -3} in
    ".pl")
    perl  $datei  #Here it just goes on...
    #echo "Test 1"
    #echo "Test 2"
    ;;
    ".pm")
        echo $datei "is a Perl Module" 
    ;;
    *)
        echo "Something elso"
    ;;
    esac
done <<< $seqfile;

您注意到带有 echo "Test 1/2" 的两行注释。我想知道它们是如何显示的。 实际上它们是互相写在下面的,就像有一个 Enter-Press:

Test 1
Test 2

Perl 脚本的输出是正确的,我只需要找出一种方法来强制从用户而不是脚本中读取输入。

最佳答案

让 perl 脚本重定向来自 /dev/tty 的输入。

概念验证:

while read line ; do
    export line
    perl -e 'print "Enter $ENV{line}: ";$y=<STDIN>;print "$ENV{line} is $y\n"' </dev/tty
done <<EOF
foo
bar
EOF

程序输出(用户输入粗体):

Enter foo: <strong>123</strong> foo is 123<br/> Enter bar: <strong>456</strong> bar is 456

关于bash - 强制 Bash 脚本等待等待输入的 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48669657/

相关文章:

Perl 和 Moose:我应该使用什么基于 Moose 的包来替代 MooseX::Method

c++ - 如何在数组中定义 C++ 中的字符大小?

c++ - 用户输入的单个字符的验证器

linux - 如何查找所有以/filesystem开头的文件系统

linux - awk 将模式从一个文件匹配到另一个文件

linux - bash 脚本不会将标准输出重定向到文件

java - 需要将用户输入存储到 arrayList 中并保存到 txt 文件中,以便能够在请求时拉回

linux - 无法获取 Chef Recipe 以获取 .bashrc,我做错了什么?

perl - 为什么 perl 在我的数据库有值(value)的时候把空的放在我的数据库上?

perl - TAP::Harness 时间问题与 TAP::Formatter::JUnit