2017-08-03 3 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 

は、アクティブデスクトップに関する情報を格納して処理する必要があり、現れるものを:

$ 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 
:いくつかの奇妙な理由で

$ wmctrl -d | grep "*" 
2 * 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

@ (wmctrl -d | grep "[*]") '同じ結果を出す(間違った)... – nightcod3r

+2

' echo "を試してみてください。 $ activedesktop "' – melpomene

答えて

1

@melpomeneによって指摘されているように、変数には必要な情報が格納されていますが、以前はechoがアスタリスクを解釈します。

したがって、解はecho "$activedesktop"のように変数を二重引用符で囲むだけです。