我试图在 shell 脚本中读取用户的多个项目,但没有成功。目的是首先读取文件列表(从标准输入管道读取),然后再读取两次以交互方式获取两个字符串。我想做的是读取要附加在电子邮件中的文件列表,然后是主题,最后是电子邮件正文。
到目前为止我有这个:
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 技巧读取标准输入:
# 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))
Thanks!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)