O "$ n" dentro do comando -c pode ser expandido pelo shell externo, não pelo scrot. Você deve escapar:
$ image=$(su someuser -c "scrot -s -e 'echo \$n'")
Eu quero capturar o nome de um arquivo de imagem criado com scrot . Eu posso capturar o nome do arquivo assim:
$ image=$(scrot -s -e 'echo $n')
$ echo $image
2018-09-07-140419_185x76_scrot.png
Eu preciso fazer isso via su
:
$ image=$(su someuser -c "scrot -s -e 'echo $n'")
No entanto, image
está vazio.
Acho que esta sintaxe está correta - isso funciona:
$ greeting=$(su someuser -c "echo 'hello, world'")
$ echo $greeting
hello, world
Não sei por que isso não está funcionando com scrot
. Eu presumo que tenha algo a ver com a forma como o scrot
lança o seu subshell - acho que não propaga a sua saída?
Tags su shell-script