我有一个 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/