所以我正在制作一个 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);
但是没用! 我找不到任何使用管道在 gnome 扩展中运行命令的示例。
我是否必须像以前那样在命令中编写 "|"
?
最佳答案
spawn_async_with_pipes
没有按照您的意愿进行(以一种简单的方式)。它返回管道进行处理。您可以通过两次调用和连接来完成,但这会有点复杂。
保持精确语法的一个简单方法是调用一个将进行管道处理的 shell 在this answer的帮助下它提供了一种调用命令的方法,我编写了以下代码,它使用正确的参数调用 shell(在本例中为 bash)
const Util = imports.misc.util;
Util.spawn(['/bin/bash', '-c', "xrandr --query | awk 'something'"])
关于javascript - Gnome 外壳扩展 : how to run a command with pipes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33911776/