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'")

おすすめ記事