使用 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.我认为这与如何启动其子 shell 有关scrot- 我猜它不会传播其输出?

答案1

-c 命令中的“$n”由外壳扩展,而不是由 scrot 扩展。你应该逃避它:

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

相关内容