Ale*_*iné 0 bash shell ubuntu environment-variables variable-expansion
我正在编写一个脚本,我需要找到当前用户的桌面文件夹。我希望它与语言无关,所以我发现在 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.
如果有人能帮助我解决这个问题,我将不胜感激,因为我记得我第一次编写代码时就已经遇到了这个问题,这就是我放弃并使用 wicked 的原因eval。
最有用的方法是来源 ~/.config/user-dirs.dirs
. ~/.config/user-dirs.dirs
# Variable is now readily available
echo "$XDG_DESKTOP_DIR"
Run Code Online (Sandbox Code Playgroud)
另一种方法是envsubst在解析文件之前使用扩展环境变量:
desktop_dir="$(
envsubst < ~/.config/user-dirs.dirs |
sed -n 's/XDG_DESKTOP_DIR="\(.*\)"/\1/p'
)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |