2014-12-31 5 views
1

나는 다음 명령의 결과를 변수에 넣고 싶습니다.bash 명령 대체가 이스케이프

xprop -name "google-chrome-stable" | grep "window id" | awk '{print $5}' | awk '{print $1}' 

결과는 내가이 명령 치환와 함께 할 수있는 알고

OUTPUT=xprop -name "google-chrome-stable" | grep "window id" | awk '{print $5}' | awk '{print $1}' 
echo $OUTPUT 

처럼 보일 것이다. 링크 command substitution의 예제는 따옴표와 아포스트로피를 이스케이프하는 방법을 설명하지 않았기 때문에 충분히 자세하지 않습니다. 누군가 내가 그 문제를 해결하는 방법을 찾도록 도와 줄 수 있습니까? 임의 $()에서 탈출을 할 필요가

output=$(xprop -name "google-chrome-stable" | awk '/window id/{print $5}') 
echo "$output" 

없습니다 : 당신은 단순히이 작업을 수행 할 필요가 같은

+0

출력에서 ​​가져 오는 창 ID는 무엇입니까? 여기 내 창에있는 "창 ID"와 일치하는 최소한 세 줄이 있습니다. –

+0

xdotool을 사용하여 창을 화면에 배치 할 수있는 창 ID를 얻으려고합니다. 이 다른 "창문 ID"가 무엇인지 생각해보십시오. 창문에 실제로 다른 창문 ID가 있습니까? – divramod

+0

출력에서'xprop' 명령을 정확히 실행하면 (그리고 어떤 속성에 대해) 찾고있는 행이 맞습니까? 그리고 네, 많은 창문에는'window id' 검색과 일치하는 줄이 두 개 이상 있습니다. –

답변

1

는 것 같습니다. glob 확장과 같은 것을 막기 위해 변수를 큰 따옴표로 묶었습니다. 보너스로 grep과 awk 명령을 결합하고 유용한 명령을 수행하지 않은 마지막 명령을 제거했습니다.

또한 변수 이름을 소문자로 변경했습니다. 대문자 변수 이름은 쉘 내부 용으로 예약해야합니다. 변수가 $PATH이라면 갑자기 모든 것이 작동을 멈추게됩니다.

+0

맞습니다, 두 번째 awk는 무언가를 시도했습니다. 다른 힌트를위한 thx. – divramod

1

그룹 리더 창을 얻으려는 경우 대신 다음을 사용할 수 있습니다. -f

output=$(xprop -notype -f WM_HINTS "32mx" ' ?m6($8)\n' -name google-chrome-stable WM_HINTS | awk '{print $2}') 
echo "$output" 

인수는은 xprop 소스 자체와 일부 매뉴얼 페이지 읽기에 대한 formatdformat에서 가져온했다.

Description 섹션은 모두 약 formatdformat을 설명합니다.

+0

@TomFenech 아니, 고마워. 그것은 오타/문맥의 실수였습니다 (저는 그 전에 몇 분간 작업했습니다). –

+0

안녕하세요, etan, 열려있는 google-chrome으로 xprop 명령을 시도했지만 결과를 얻을 수 없습니다. WM_HINTS "32mx"는 무엇을 의미합니까? [m6 ($ 8) \ n]은 [3] -name 'DO NOT KILL'을 의미 함을 의미합니다. 나는 실제로 xdotool을 사용하여이 창을 나의 터미널 외에도 옮기고 google-chrome-stable leader를 찾고있다. [4] 그룹 리더 창이 크롬에 어떤 의미인지 설명해 주시겠습니까? – divramod

+0

@ArvidPetermann Bah, "DO NOT KILL"은 내가 사용했던 테스트 창이었습니다. 대신 창 이름이 필요합니다. 미안합니다. '-notype'은'xprop'에게 출력에 타입 정보를 포함시키지 않도록 지시합니다 (출력을 약간 정리합니다). '-f 힌트 형식 dformat'은 힌트의 형식을 지정합니다. 좀 더 자세하게 설명 할 수는 있지만 man 페이지에서 많이 부딪 히게 될 것이며, 신경 쓰면 스스로 할 수 있습니다. 나머지 정보없이 단지'WM_HINTS' 그룹 리더 창 id를 요구한다고 말하면 충분합니다. 끝에있는'WM_HINTS'는 단지 하나의 정보 필드를 요구합니다. –