我是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 )