我是 bash 脚本的新手,我只是想让它正常工作。我想要得到的是一个 cd 到默认下载目录的脚本,例如/home/david/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 命令对其进行了扩展,但它似乎应该是最后的手段。
感谢您的帮助!
最佳答案
使用 gnu
提供的 envsubst
替换 shell 格式字符串中的环境变量:
dir=$(awk -F '["=]+' '/DOWNLOAD/{print $2}' file | envsubst)
echo "$dir"
# will output /home/user/Downloads
cd "$dir"
关于linux - 从 bash 脚本中的 grep 输出扩展环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347991/