Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t将gvim的stdout放入bash变量_Bash_Unix_Vim - Fatal编程技术网

can';t将gvim的stdout放入bash变量

can';t将gvim的stdout放入bash变量,bash,unix,vim,Bash,Unix,Vim,在尝试回答问题时,我正在试验gvim--echo-wid,我认为它可以与xdool一起使用 也许这只是脑痛,但我花了很长时间将gvim--echo wid的输出输入到bash变量中,而不阻塞 X=`gvim --echo-wid` 不起作用,backtick捕获似乎阻止了gvim分叉和去跟踪X仅在gvim终止后设置 X=`gvim --echo-wid &`; echo "got: $X" 同样的故事 mkfifo $F (gvim --echo-wid > $F) &

在尝试回答问题时,我正在试验
gvim--echo-wid
,我认为它可以与
xdool
一起使用

也许这只是脑痛,但我花了很长时间将
gvim--echo wid
的输出输入到bash变量中,而不阻塞

X=`gvim --echo-wid`
不起作用,backtick捕获似乎阻止了gvim分叉和去跟踪<代码>X仅在gvim终止后设置

X=`gvim --echo-wid &`; echo "got: $X"
同样的故事

mkfifo $F
(gvim --echo-wid > $F) &
X=`cat $F`

同样的故事

mkfifo $F
(gvim --echo-wid > $F) &
X=`cat $F`
我想要

  • 背景中的gvim
  • 它的stdout在一个bash变量中,是同步的
或者,我可以通过任何其他方式获取wmctrl或xdotool或其他等效工具的gvim窗口ID(无需查询某些列表,我希望直接转到该实例的窗口,而无需进行字符串攻击)


虽然在这一点上,我真的很好奇为什么捕获不起作用。给出了什么?

如果它输出到stderr,您需要重定向它

X=`gvim --echo-wid 2>&1`

当gvim启动时,它为gui派生一个新的进程,这个进程可以在后台运行,但是stdout直到整个程序关闭才关闭

若你们将gvim导入头部,标准输出将关闭,反勾将停止阻塞

X=`gvim --echo-wid | head -n 1`
echo "got $X"

它仍然阻塞,直到gvim终止。