Gnome Shell扩展:如何使用管道运行命令

S_D*_*S_D 5 javascript gnome glib gnome-3 gnome-shell-extensions

所以我正在做一个Gnome Shell扩展。我希望能够使用管道运行某些命令。(该命令实际上是"xrandr --query | awk 'something'",但这不是主题)

所以,到目前为止我所做的是

GLib.spawn_async_with_pipes(null,
                            ['/usr/bin/xrandr', '--query', '|', 'awk...'], null,
                            GLib.SpawnFlags.DO_NOT_REAP_CHILD, null);
Run Code Online (Sandbox Code Playgroud)

但这不起作用!我找不到在带有管道的gnome扩展中运行命令的任何示例。

我是否必须"|"像以前一样在命令中编写代码?

Xav*_*lle 3

spawn_async_with_pipes没有做你想做的事(以简单的方式)。它返回管道以进行处理。您可以通过两次调用和连接来完成此操作,但会有点复杂。

保持准确语法的一个简单方法是调用一个 shell,它将在这个答案的帮助下进行管道处理,它提供了一种调用命令的方法,我编写了以下代码,它调用 shell(本例中为 bash)正确的论点

const Util = imports.misc.util;
Util.spawn(['/bin/bash', '-c', "xrandr --query | awk 'something'"])
Run Code Online (Sandbox Code Playgroud)