试图在stdin上循环遍历

时间:2016-11-01 22:34:28

标签: bash

我想制作一个最终会实施测验的简短脚本。

我正在尝试阅读stdin,其中包含一个以换行符号分隔的单词列表example input

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

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

for line in "${lines[@]}"
do
  echo "$line"
done

现在如果我运行pbpaste | bash wordlearner.bash根本没有打印任何内容,即使我期望(此时)基本上是输入内容的完美echo

如何将stdin存储在以后进行循环播放?

1 个答案:

答案 0 :(得分:1)

使用while循环,然后请求输入以读取/dev/tty

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

替代使用mapfile将所有行都插入数组?

mapfile -t lines
for line in "${lines[@]}"; do
  echo "$line"
done