在 bash 中以半交互方式从用户处读取多个项目

2023-11-24

我试图在 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(使用前将#替换为@)

在 bash 中以半交互方式从用户处读取多个项目 的相关文章

  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 用等号完成命令选项

    我正在尝试为可能需要表单上的长选项的命令编写一个 Bash 完成脚本 option or param value 如果用户已经在命令行上输入了一个选项 则该选项应从完成列表中排除 假设仅在命令行上指定一次给定选项才有意义 这是第一次尝试 m
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • bash循环跳过注释行

    我正在循环文件中的行 我只需要跳过以 开头的行 我怎么做 bin sh while read line do if line doesn t start with then echo line fi done lt tmp myfile 谢
  • 如何使用 bash 测试文件系统的目录限制

    我需要测试可以在文件系统 网络安装驱动器和本地 USB 驱动器 上创建多少目录和文件 我现在使用这个 bash 行 for i in 0 999999 do mkdir p i pushd i done 我知道可能可以做得更好 并且我想知道
  • 如何将后台作业的输出分配给 bash 变量?

    我想在 bash 中运行后台作业并将其结果分配给一个变量 我不喜欢使用临时文件 并且希望同时运行多个类似的后台任务 root root var echo hello world root root echo var hello world
  • 通过 bash 从文件中检索电子邮件主题

    我有一个 shell 脚本 它将文件从服务器邮件文件夹下载到 NAS 设备 以便客户端拥有本地备份的副本 文件保存为11469448248 H15587P19346 smtp x14 eu 2 S文件 我已将扩展名更改为标准 eml 格式
  • Bash 脚本:将数组作为参数传递给函数并打印数组

    我将一个数组传递给一个函数并尝试打印该数组的每个元素 下面是数组参数周围带有引号的代码片段 bin bash print array array for i in array with quotes do echo i done ar 1
  • 使用 select 从套接字和标准输入读取

    我正在编写一个基于 ncurses 的聊天程序 起初 我只编写了网络内容 没有 ncurses 一切都工作正常 但添加图形后我无法让客户端应用程序正常工作 主要问题是同时从标准输入和套接字读取 在无 ncurses 的版本中 我使用了 pt
  • 检查 Bash 数组中是否存在元素[重复]

    这个问题在这里已经有答案了 我想知道是否有一种有效的方法来检查 Bash 数组中是否存在元素 我正在寻找类似于我可以在Python中做的事情 例如 arr a b c d if d in arr do your thing else do
  • 为什么是 ”& ;”无效的语法?

    我正在尝试在终端上运行 for 循环 我希望将每次迭代发送到后台进程 以便所有迭代同时运行 以下是命令一一运行 for i in sra do fastq dump split files i done only 我突出显示了分号 要同时运
  • 在 perl 中 \*STDIN 与 STDIN 相同吗?

    我是作者Python化者 https github com snoopyjc pythonizer我正在尝试将 CGI pm 的代码从标准 perl 库翻译为 Python 我在中遇到了这段代码从客户端读取 https metacpan o
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 在 bash 中,如何除以两个变量并输出四舍五入到小数点后 5 位的答案? [复制]

    这个问题在这里已经有答案了 我将两个变量作为输入 将它们相除后 我希望将输出四舍五入到小数点后 5 位 我已经尝试过这种方法 gt sum 12 n 7 output scale 5 sum n bc echo output 我的代码没有显
  • Bash 字符串之间的比较 - 相等但不相等

    我只想在 Bash 中的两个字符串之间进行非常简单的比较 stat curl Is url head n 1 echo stat if stat HTTP 1 1 200 OK then echo symbol is OK echo sta
  • wget 并行下载文件并重命名

    我有一个包含两列的文本文件 第一列是要保存的名称 第二列是资源的 url 地址 10000899567110806314 jpg http lifestyle inquirer net files 2018 07 t0724cheekee
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • Python Twisted 与 Cmd 模块集成

    我喜欢Python的Twisted http twistedmatrix com and Cmd http docs python org library cmd html 我想一起使用它们 我已经完成了一些工作 但到目前为止我还没有弄清楚
  • 使用 IFS bash 进行 CSV 解析:选择“;”作为分隔符

    我有一个包含 130 列的 CSV 我需要用它来做 3 个 csv 我用 while 和 IFS 循环 因为我需要对每一行的变量进行一些处理 这是我所做的 while IFS read my 130 vars what i do with
  • 获取 Bash 中最后运行的程序的名称

    我有一个 bash 脚本 我使用 trap 命令捕获错误 并且我希望能够打印最后一个命令的名称 失败的命令 bin bash function error echo program name trap error ERR Some comm

随机推荐

  • 如何实现TabHost滑动效果? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我需要创建一些 TabHost 表单分页 切换选项页面时TabHost栏有滑动动画效果
  • 英特尔 AVX 内在函数:有兼容库吗?

    有 Intel AVX 内在函数库吗 我正在寻找类似于 sse2mmx h 标头的内容 如果 SSE2 整数内在函数在编译时不可用 则该标头会回退到 MMX 内在函数 因此 如果我有类似的 AVX 库 我可以为新硬件编写优化的代码 在 AV
  • 如何验证 Blazor EditForm 中的单个字段?

    我得到了EditContext from CascadingParameter CascadingParameter public EditContext EditContext get set 我意识到存在一个 Validate方法 验证
  • 通过 REST 调用使用外键将项目添加到集合中

    我有 2 个具有双向关联的 jpa 实体 Entity Container包含项目集合 oneToMany 省略 getter setter javax persistence Entity Table name CONTAINER pub
  • 如何将 kable 拆分为多列?

    我正在尝试为 RMarkdown 中的长表生成 纵向 布局kable 例如 我希望将表分为两列 如下例所示 dd lt data frame state state abb freq 1 50 kable list state dd 1 2
  • Android 点击弹出窗口

    我创建了一个扩展弹出窗口的类 它的构造函数看起来像下面这样 super builder context get this setWindowLayoutMode ViewGroup LayoutParams MATCH PARENT Vie
  • WatchKit Complication:从扩展委托获取 Complication 数据

    我的 WatchKit 扩展中有我需要的所有数据 从 iOS 应用程序传递 我使用了WatchKit中的数据InterfaceController填写表格 效果非常好 我正在尝试找出最好的方法在我的 WatchKit 中获取相同的数据Com
  • 当接口 ReadOnly 属性在 C#.NET 中有效时,为什么不能在 VB.NET 中覆盖它?

    这与这另一个问题 如果您定义一个接口 其中有一个仅具有 getter 的属性 VB NET 中的 ReadOnly 为什么用 C 实现类时可以定义 setter 而用 VB 却不能 我本以为它是在 NET 级别定义的 而不是特定于语言的 示
  • HTML5 doctype 将 IE9 置于怪异模式?

    我正在尝试让 IE9 使用 IE9 标准加载我的页面 我注意到有将这该死的东西置于怪异模式 这几乎破坏了页面上的所有内容 如何让 IE 遵守 IE9 标准 Placing in the 标签应该可以做到
  • d3js 转换嵌套组图像

    我正在研究 this 1 d3 项目 基本上我正在尝试创建一个类似 SQL 的查询生成器 我可以将盒子放到绘图区域以及盒子内的其他操作员 那么我应该能够将它们全部连接起来 我正在尝试翻译嵌套在组中的 2 个图像 我想把小东西搬到大箱子里 我
  • “make install”和“make altinstall”之间的细节差异

    这是我的案例 我在用Ubuntu 10 04 清醒山猫 系统默认的Python是v2 6 5 但我需要Python v2 7 所以我从 python org 下载了源代码并尝试安装它 我第一次安装它时 我运行 cd Python2 7 4
  • eval和setTimeout执行字符串代码的区别

    我知道eval and setTimeout都可以接受字符串作为 第一个 参数 而且我知道最好不要使用它 我只是好奇为什么会有差异 function var foo 123 eval alert foo function var foo 1
  • Angular jasmine 测试无法触发使用 fromEvent rxjs 运算符创建的 Observable

    我有一个简单的案例 标准AppComponentAngular 应用程序包含ChildComponent这是在它自己的模块中定义的ChildModule 模板为ChildComponent很简单 div class child div Ch
  • Android中的人脸识别认证[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 与应用程序的指纹身份验证类似 我正在尝试在我的 Android 应用程序之一中实现人脸识别身份验证 任何人都可以指导我如何使用任何库或任何东西来实现
  • 使用Python和ftplib检查FTP服务器上的对象是文件还是目录

    我正在使用 Python 和 ftplib 编写一个通用函数来检查 FTP 目录中的项目是文件还是目录 由于使用 MLSD 函数可能不一定适用于所有服务器 我的一个用例没有提供它 因此我采用了这种有效但粗略的方式来确定它 方法是尝试更改对象
  • 使 html 选择选项下拉菜单默认打开

    单击选择框时 将显示选项的下拉列表 下拉列表保持打开状态 直到用户单击外部或选择下拉列表中的选项之一 有没有一种简单的方法可以让用户进入页面时显示下拉列表 类似于自动对焦 但更好 类似于亚马逊自动显示菜单的方式 我知道我可能可以制作一个 u
  • sqlite 返回:错误代码 = 1,消息 = 没有这样的列:kitchen1

    我已经收到这个错误两天了 但我找不到我的代码的问题 这是数据库代码 SQLHandler java import android content ContentValues import android content Context im
  • 找出 GCC 包含路径是什么[重复]

    这个问题在这里已经有答案了 我正在尝试以编程方式找到 includeLinux 上的路径 据我了解 实际上意味着找到 GCC 认为它是什么 这是真的吗 Clang 是如何做到的 根据http gcc gnu org onlinedocs c
  • 定位第 n 列(由列数组成)

    假设我有这个 ul li test li li test li li test li li test li li test li li test li ul ul column count 2 我想将第一列向右对齐 第二列向左对齐 有没有办
  • 在 bash 中以半交互方式从用户处读取多个项目

    我试图在 shell 脚本中读取用户的多个项目 但没有成功 目的是首先读取文件列表 从标准输入管道读取 然后再读取两次以交互方式获取两个字符串 我想做的是读取要附加在电子邮件中的文件列表 然后是主题 最后是电子邮件正文 到目前为止我有这个