【问题标题】:Linux script for redirecting streams用于重定向流的 Linux 脚本
【发布时间】:2015-01-21 05:56:06
【问题描述】:

我有这样的事情要做:

  1. 我有一个应用程序可以从标准输入中获取像“a = 1”这样的文本。
  2. 为以下内容创建脚本:
    • 创建一个管道并将其重定向为上述应用程序的标准输入,
    • 为用户创建第二个管道。
    • 在循环中:
      • 打开第二个管道并阅读。
      • 到达终点后将其发送给第一个和^E
      • 重复。

我做过类似的事情,但这不起作用。不明确的重定向(第 16 行)和错误的文件描述符(第 15 行)存在问题。怎么了?

mkfifo f1
mkfifo f2

p1 = /f1
p2 = /f2


exec 5<> $p1
./fifo -D $1 0<&5 &

while : ; do
    while read L ; do
        echo $L >&5
    done <$p2
    echo "5" >&5
done

【问题讨论】:

  • 我很困惑。您能否尝试澄清一下,也许是输入和预期输出的示例?您只想运行该程序一次,对吗?是否要在 End-Of-File 之后继续处理新的一批输入?
  • 它采用像 a=1、b=0 这样的行并计算 $1 中给出的表达式。评估在发送 ^E 后开始,它等待新值。使用 EOF 会停止。
  • 要么我今天的阅读理解力真的很低,要么你在描述你想要这个做什么时非常草率。如果不是 EOF,应该如何终止内部循环?当您创建的先进先出为f1 时,为什么要指定/f1?如果您不是指 EOF,那么“到达终点”是什么意思? ./fifo 命令是什么?你想做的和简单的while : ; do while read line; do echo $line; done; echo 5; done | yourprogram有什么不同?
  • ./fifo 正是我的程序。嘿,如果我知道它是如何工作的,我就不会问了。我的问题中的这些观点与我所说的完全一致。

标签: linux bash shell


【解决方案1】:

等号周围不能有空格。

以后请使用http://shellcheck.net/

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多