2013-05-08 57 views
2

在試圖回答this question時,我正在試驗gvim --echo-wid,我認爲這將與xdotool一起使用。無法將gvim的標準輸出轉換爲bash變量

也許這只是一個腦筋急轉彎,但我有一段時間讓gvim --echo-wid的輸出變成一個bash變量而不會阻止

X=`gvim --echo-wid` 

不起作用,反引號捕獲好像從分叉和detatching停止GVIM。僅在gvim終止後纔會設置爲X

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
  • 其在bash變量標準輸出,同步

或任何其他方式,我可以得到GVIM的窗口ID爲wmctrl或xdotool或某些等效(沒有查詢某個列表,我想直接進入這個實例的窗口,而不需要字符串黑客)。

雖然在這一點上,我真的只是好奇爲什麼捕捉不起作用。是什麼賦予了?

回答

0

如果是輸出到標準錯誤,你需要當gvim啓動它fork一個新的進程的圖形用戶界面,這可以在後臺運行,可以將其重定向

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

它仍然阻塞,直到gvim終止。 – spraff 2013-05-08 10:34:54

0

,但stdout不是關閉,直到整個計劃關閉。

如果你將gvim管入頭部,stdout將關閉,反向會停止阻塞。

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