我想捕获使用以下命令创建的图像文件的名称斯库特。我可以这样捕获文件名:
$ 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'")