gpt4 book ai didi

bash - 如何在 bash 中读取文件 * 和 * stdin

转载 作者:行者123 更新时间:2023-11-29 09:18:20 24 4
gpt4 key购买 nike

这是我的任务:逐行从文件中读取一些数据。对于每一行,如果它满足某些条件,则要求用户输入一些内容并根据用户的输入进行处理。

我知道如何从 shell 脚本中逐行读取内容:

while read line; do
echo $line
done < file.txt

但是,如果我想在循环体内 与用户交互怎么办。从概念上讲,这就是我想要的:

while read line; do
echo "Is this what you want: $line [Y]es/[n]o"
# Here is the problem:
# I want to read something from standard input here.
# However, inside the loop body, the standard input is redirected to file.txt
read INPUT
if [[ $INPUT == "Y" ]]; then
echo $line
fi
done < file.txt

我应该使用另一种方式来读取文件吗?还是另一种读取标准输入的方法?

最佳答案

您可以在标准输入以外的文件描述符上打开文件。例如:

while read -u 3 line; do     # read from fd 3
read -p "Y or N: " INPUT # read from standard input
if [[ $INPUT == "Y" ]]; then
echo $line
fi
done 3< file.txt # open file on fd 3 for input

关于bash - 如何在 bash 中读取文件 * 和 * stdin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23260479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com