gpt4 book ai didi

bash - 从 bash 中的用户半交互地读取多个项目

转载 作者:行者123 更新时间:2023-11-29 08:56:49 25 4
gpt4 key购买 nike

我试图在 shell 脚本中从用户那里读取多个项目,但没有成功。目的是首先读取文件列表(从 stdin 管道读取),然后再读取两次以交互获取两个字符串。我想要做的是阅读要附加到电子邮件中的文件列表,然后是主题,最后是电子邮件正文。

到目前为止我有这个:

photos=($(< /dev/stdin))

echo "Enter message subject"
subject=$(< /dev/stdin)

echo "Enter message body"
body=$(< /dev/stdin)

(加上为简洁起见我省略的错误检查代码)

但是,这得到一个空的主题和正文,大概是因为第二次和第三次重定向得到了 EOF。

我一直在尝试用 <&- 和东西关闭并重新打开标准输入,但它似乎并没有那样工作。

我什至尝试为文件列表使用分隔符,使用“while; read line”循环并在检测到分隔符时跳出循环。但这也不起作用(??)。

关于如何构建这样的东西有什么想法吗?

最佳答案

所以我最终做的是基于 ezpz 的回答和这个文档:http://www.faqs.org/docs/abs/HTML/io-redirection.html基本上我首先从/dev/tty 提示输入字段,然后使用 dup-and-close 技巧读取 stdin:

# close stdin after dup'ing it to FD 6
exec 6<&0

# open /dev/tty as stdin
exec 0</dev/tty

# now read the fields
echo "Enter message subject"
read subject
echo "Enter message body"
read body

# done reading interactively; now read from the pipe
exec 0<&6 6<&-
photos=($(< /dev/stdin))

谢谢!

关于bash - 从 bash 中的用户半交互地读取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992323/

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