gpt4 book ai didi

csh - 如何根据 sed 结果设置 env(对于 gnome-keyring-daemon)

转载 作者:行者123 更新时间:2023-12-02 00:23:42 25 4
gpt4 key购买 nike

我的问题

我的核心问题是我需要从 c shell 启动 gnome-keyring-daemon。在 bash 中,这很容易:

> export `gnome-keyring-daemon`

相当于:

> export GNOME_KEYRING_SOCKET=/tmp/0123.1.sds/keyring-abcdef/socket GNOME_KEYRING_PID=012345

我的目标是在 c shell 中获得相同的功能,但我的命令行技能无法胜任这项任务。

我尝试了什么

如果我跑

echo gnome-keyring-daemon | tr '=' ' ' | sed s/GNOME_KEYRING_SOCKET/setenv\ GNOME_KEYRING_SOCKET/ | sed s/GNOME_KEYRING_PID/\;setenv\ GNOME_KEYRING_PID/

我有一个好的开始:

setenv GNOME_KEYRING_SOCKET /tmp/0123.1.sds/keyring-abcdef/socket ;setenv GNOME_KEYRING_PID 012345

尽管我可以将该输出复制并粘贴到命令行并让它工作,但如果我将该语句括在刻度中以使其在一行上工作,我会收到以下错误:

Invalid null command.

我研究了一下,发现它与 newline sneaking in 有关需要转义或删除;但是,即使像这样为\r 和\n 添加替换命令后,我仍然会收到错误消息:

> | tr '\r' ' ' | tr '\n' ' ' |

我在找什么

我真的只需要我可以添加到我的 .cshrc 文件中的任何东西来启动 gnome-keyring-daemon。如果我走错了路,我很乐意听到替代方法。

谢谢!

我最后尝试的一件事

为了真正简化这一点,我还尝试一次只设置一个变量:

setenv GNOME_KEYRING_PID `echo -n `gnome-keyring-daemon` | sed 's/.*GNOME_KEYRING_PID=\([0-9]\+\)/\1/'`

这也给了我一个“无效的空命令”。消息尽管这有效:

setenv GNOME_KEYRING_PID `echo '1234'`

最佳答案

感谢@shelter 和@gbulmer 的帮助。我真的很讨厌回答我自己的问题,但这可能会帮助将来的人......

最后,我更新了我的 C Shell 脚本以在多个单独的行上设置变量:

set gkd = `gnome-keyring-daemon`

set pid = `echo $gkd | sed 's/.*GNOME_KEYRING_PID=\([0-9]\+\)/\1/'`
set socket = `echo $gkd | sed 's/GNOME_KEYRING_SOCKET=\([^ ]\+\).\+/\1/'`
setenv GNOME_KEYRING_PID $pid
setenv GNOME_KEYRING_SOCKET $socket

关于csh - 如何根据 sed 结果设置 env(对于 gnome-keyring-daemon),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com