
次のように生成されたイメージファイルの名前をキャプチャしたいと思います。スカウト。次のようにファイル名をキャプチャできます。
$ 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'")