Bash 正在尝试通过stdin上的行循环

Bash 正在尝试通过stdin上的行循环,bash,Bash,我想做一个简短的脚本,最终实现一个测验 我正在尝试读取stdin,它包含一个新行分隔的单词列表 到目前为止,我的程序似乎还没有将输入转换成任何类型的iterable数组: read inputlines IFS=$'\n' read -rd '' -a y <<<"$inputlines" for line in "${lines[@]}" do echo "$line" done 读取输入行 IFS=$'\n'read-rd'-a y使用while循环,然后请求输入来

我想做一个简短的脚本,最终实现一个测验

我正在尝试读取
stdin
,它包含一个新行分隔的单词列表

到目前为止,我的程序似乎还没有将输入转换成任何类型的iterable数组:

read inputlines
IFS=$'\n' read -rd '' -a y <<<"$inputlines"

for line in "${lines[@]}"
do
  echo "$line"
done
读取输入行

IFS=$'\n'read-rd'-a y使用while循环,然后请求输入来读取
/dev/tty

while read -r line; do
  echo "$line"
  echo "What do you think?"
  read -r answer < /dev/tty
done

注意:我不能直接循环stdin本身,因为我需要在程序运行时从用户那里获取输入。为什么这是被否决的?!?!?!说真的,有一个机器人/用户对我恨之入骨,这个问题有什么不妥?我以前已经有过这个解决方案,但它不起作用,因为我还打算在循环的每个迭代中从用户那里获取输入。是的,这非常有效。谢谢,我不知道
/dev/tty
mapfile…
是冗余的;它已经从标准输入读取数据。
mapfile -t lines
for line in "${lines[@]}"; do
  echo "$line"
done