【发布时间】:2019-05-27 03:27:12
【问题描述】:
举个例子:
ls -l | grep -i readme | ./myscript.sh
我想要做的是在myscript.sh 中获取ls -l | grep -i readme 作为字符串变量。所以基本上我试图在myscript.sh 中使用最后一个管道之前获取整个命令。
这可能吗?
【问题讨论】:
-
不,这是不可能的。你得到的只是一个先进先出;你没有办法知道它的另一面是什么。 (另外,这已经被问过了;给我一点时间来尝试找到重复的......)
-
作为一种更好地解释是否可以合理预期它可能的方法,请记住,关于管道的任何内容都不是特定于 shell 的,或者需要 成为输入的命令行。如果您有一个 C 程序执行与 shell 设置管道相同的一组
mkfifo()s、dup2()s 和execve()s,那么您将以相同的方式连接同一组程序,但没有一个字符串描述它曾经被构造过。 -
(在 UNIX 的操作系统级别,程序被传递 C 字符串的 数组;单字符串结构在 shell 内部,被调用的程序永远不会看到)。
-
@vintnes,将它们的输出存储在文件中如何为处理文件的程序提供创建文件的命令文本?因为这就是他们在这里所要求的——能够访问创建输入的命令文本。
-
@CharlesDuffy XY 问题,那么。任何人都不应该处于这个位置。
标签: bash