gpt4 book ai didi

bash - 如何扩展包含文本和其他变量混合的变量?

转载 作者:行者123 更新时间:2023-12-04 18:55:21 25 4
gpt4 key购买 nike

我正在编写一个脚本,我需要找到当前用户的桌面文件夹。我希望它与语言无关,所以我发现在 Ubuntu 上,您可以在 ~/.config/user-dirs.dirs 中找到桌面的路径(与系统语言无关)。在以标签 XDG_DESKTOP_DIR 开头的行中.

我可以使用 DESK=$(more ~/.config/user-dirs.dirs | grep "XDG_DESKTOP_DIR" | cut -d '"' -f2) 轻松捕获此信息并获取桌面的路径,但问题是我得到了这样的东西:$HOME/Desktop我需要扩展 $HOME 变量。

我是用 eval 做的但我知道这是不好的编码,所以我决定改变它。

所以基本上我正在尝试扩展包含文本和变量混合的变量内部的变量。我想为此提供一个未针对 $HOME 进行硬编码的解决方案变量,因为这不是我第一次发现这个问题。

我已经尝试过${!DESK} , ${${DESK}} (我可以想象为什么这不起作用),[[ ${escri} ]]和其他结合echo -e .

如果有人可以帮助我解决这个问题,我将非常感激,因为我记得我第一次编写代码时已经遇到了这个问题,这就是我放弃并使用邪恶的 eval 的原因。 .

最佳答案

最有用的方法是来源 ~/.config/user-dirs.dirs

. ~/.config/user-dirs.dirs

# Variable is now readily available
echo "$XDG_DESKTOP_DIR"

另一种方法是使用 envsubst在解析文件之前扩展环境变量:

desktop_dir="$(
envsubst < ~/.config/user-dirs.dirs |
sed -n 's/XDG_DESKTOP_DIR="\(.*\)"/\1/p'
)"

关于bash - 如何扩展包含文本和其他变量混合的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61311521/

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