提取由特殊字符标识的行' *'并将其存储在变量中

时间:2017-08-03 14:18:58

标签: bash grep special-characters

在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 个答案:

答案 0 :(得分:1)

正如@melpomene所指出的,变量确实存储了所需的信息,但前者echo解释了星号。

因此,解决方案只是在echo "$activedesktop"中对引号进行双引号。