linux-从bash脚本中的grep输出扩展环境变量

我是bash脚本的新手,我只是想使它工作.我想要得到的是一个cd到认下载目录的脚本,例如/ home / davide / Downloads,然后在Ubuntu中从那里下载文件.我正在获取认的下载目录,例如:

OUTPUT=$(grep DOWNLOAD $HOME/.config/user-dirs.dirs)
DIR=$(echo $OUTPUT | cut -f 2 -d "=" | tr "\"" "\n")

工作正常. DIR是一个像这样的字符串:

$HOME/Downloads

当我尝试CD时会出现问题.它的功能类似于:

cd $HOME/Downloads

这会引发错误,而应该:

cd /home/davide/Downloads

我已经搜索了很多,对我来说似乎应该完成扩展.我已经使用eval命令对其进行了扩展,但看起来它应该是最后的选择.

谢谢您的帮助!

解决方法:

评论中的讨论来看,存在两个问题:

> $DIR中有换行符.我相信这是您原始错误的原因.我建议使用另一种方法来确定$DIR:

DIR=$(echo $OUTPUT | sed -r 's/.*="(.*)"/\1/g')

>变量$DIR中的文字$HOME可以用envsubst代替,例如

DIR=$(echo $DIR | envsubst )

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...