2017-08-03 27 views
0

在Lubuntu 16.02,此命令將顯示有關所有桌面的信息:提取由特殊字符標識線「*」並將其存儲在一個變量

$ wmctrl -d 
0 - DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 1 
1 - DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 2 
2 * DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 3 
3 - DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 4 
4 - DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 5 

需要存儲和處理有關的活動桌面的信息,通過什麼顯示出來:

$ wmctrl -d | grep "*" 
2 * DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 3 

一些奇怪的原因,該解決方案將不存儲信息所需:

$ activedesktop=$(wmctrl -d | grep "*") 
$ echo $activedesktop 
2 Desktop Documents Downloads Mail Music Pictures Public Videos DG: 3926x1600 VP: 0,0 WA: 0,24 2560x1576 desktop 3 

由於變量會插入主目錄名稱,「*」應該是。

爲什麼會發生這種情況,以及如何解決它?

+1

退出'*'。或者使用'grep「[*]」'。此外,請參見[在grep中匹配帶有字面星號「*」的行)(https://stackoverflow.com/questions/1581307/matching-a-line-with-a-literal-asterisk-in-grep) –

+0

@ WiktorStribiżew'activedesktop = $(wmctrl -d | grep「\ *」)''和'activedesktop = $(wmctrl -d | grep「[*]」)'提高相同(錯誤)的結果... – nightcod3r

+2

嘗試'echo「 $活動桌面「'。 – melpomene

回答

1

正如@melpomene指出的那樣,變量確實存儲了所需的信息,但前者echo解釋了星號。

因此,解決方案只是在echo "$activedesktop"中雙引號變量。

相關問題