微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐