【问题标题】:Pause in a bash while loop在 bash while 循环中暂停
【发布时间】:2018-04-04 19:27:39
【问题描述】:

我目前的任务是手动检查多个文件的内容。我有一个文本文件中列出的所有文件,逐行(每行末尾的换行符),并且目前正在尝试制定一个能够读取文本文件的bash脚本 - 逐行然后在nano中打开它们供检查。 当我在 nano 中打开它时会出现问题——我目前在 win10 上运行 linux 作为子系统,所以我只有终端可用。我目前的问题是当我尝试这样做时:

Cat file | while read line; do nano “$line”; done

最小的工作示例:

mkdir test
cd test
touch {a,v,c}
ls > file
Cat file |  while read line; do nano “$line”; done

是同时处理所有文件,或者它试图 - 它循环所有文件并结束 - 不允许我在 nano 中检查文件或允许我正确关闭它。

当我在 nano 中打开文件时,是否可以以某种方式暂停 while 循环?

【问题讨论】:

  • 所以您正在使用 nano - 一个文本编辑器,尝试从现有文本文件中读取一行文本?原谅我,但由于这里没有自治权,为什么不直接在 nano 中打开文件呢?至少有一些过滤吗?比如 if line contains "foo" ?
  • 欢迎来到 SO,您需要向我们展示您的文件样本(可能不是确切的数据,只有代码标签中的样本),然后请在您的帖子中告诉我们您需要哪个输出的要求?
  • @itChi 文本文件的每一行都是实际文件的路径。
  • @user9596253,请使用 {} 按钮在您的帖子中添加示例,然后告诉我们?
  • 它是否运行nano?是所有文件都在结束时打开,还是每个纳米窗口在打开后立即关闭?

标签: linux bash while-loop nano


【解决方案1】:
Cat file |  while read line; do nano “$line”; done

Nano 可能会尝试通过其标准输入(即管道)与您进行交互。尝试从您的 TTY 重定向其标准输入:

Cat file |  while read line; do nano “$line” < /dev/tty; done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2019-08-31
    • 2021-03-04
    • 2017-10-25
    • 2011-05-31
    • 2015-08-06
    • 2021-08-18
    相关资源
    最近更新 更多