如何使用’set | 正确编写脚本中的grep’以获取DBUS_SESSION_BUS_ADDRESS变量的值?
GNU bash,版本4.3.48(1)-release(x86_64-pc-linux-gnu),Ubuntu 16.04.3 LTS。
我需要获取DBUS_SESSION_BUS_ADDRESS的值并将其保存到文件中。
如果我运行set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
Bash中的set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
我在set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
中有类似于DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj
的.DBUS_temp
,这是正常的 。
但是当我尝试在脚本中运行命令时,会发生以下情况:
- 如果
set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
则创建一个空文件set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
。 -
BASH_EXECUTION_STRING='set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp'
如果su -c 'set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp' user
BASH_EXECUTION_STRING='set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp'
在文件中su -c 'set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp' user
。
我的代码/实现有什么问题?
感谢您的时间。
我把这个答案发给我自己的问题来关闭它。
感谢muru的帮助和这个问题的答案,我想出了如何以DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj
的forms获取DBUS_SESSION_BUS_ADDRESS变量,这对我来说是合适的(使用这个我甚至都没有需要将变量保存到文件中):
PID=$(pgrep gnome-session) export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
使用上述答案中的代码最终只获得了unix:abstract=/tmp/dbus-N1wmwpEVBj
DBUS_SESSION_BUS_ADDRESS变量的一部分。 它对我不起作用。