su를 사용하여 scrot 명령 출력 캡처

su를 사용하여 scrot 명령 출력 캡처

다음을 사용하여 생성된 이미지 파일의 이름을 캡처하고 싶습니다.스카우트. 다음과 같이 파일 이름을 캡처할 수 있습니다.

$ image=$(scrot -s -e 'echo $n')
$ echo $image
2018-09-07-140419_185x76_scrot.png

다음을 통해 이 작업을 수행해야 합니다 su.

$ image=$(su someuser -c "scrot -s -e 'echo $n'")

그러나 그것은 image비어 있었습니다.

나는 이 구문이 정확하다고 생각합니다. 이것은 작동합니다:

$ greeting=$(su someuser -c "echo 'hello, world'")
$ echo $greeting
hello, world

이것이 왜 작동하지 않는지 잘 모르겠습니다 scrot. 서브쉘이 시작되는 방식과 관련이 있는 것 같습니다. scrot출력을 전파하지 않는 것 같나요?

답변1

-c 명령의 "$n"은 scrot이 아닌 쉘에 의해 확장됩니다. 이스케이프해야 합니다.

$ image=$(su someuser -c "scrot -s -e 'echo \$n'")

관련 정보