我有以下变量显示我应该将报告写到哪里REPORT="ZFS(~/Q4Y22/report/q4y22.md)"
我已经使用sed
来提取路径和dirname
命令来获得
reportdir
变量的~/Q4Y22/report/
目录名。但是,当我运行以下测试时,不是在我的主目录中创建Q4Y22目录,而是在我的主目录中创建以下目录层次结构~/Q4Y22/report
,例如,farai/~/Q4Y22/report
而不是farai/Q4Y22/report
if [ -d $reportdir ]
then
echo "dir exists, keep moving"
else
mkdir -p $reportdir
fi
我如何解决这个问题,我尝试使用sed从路径中删除波浪,但我想知道是否有一个更聪明的方法
My try on this:
#!/bin/bash
REPORT="~/Q4Y22/report/q4y22.md"
reportdir=$(dirname "${REPORT/'~'/$HOME}")
if [ -d "$reportdir" ]
then
echo "dir exists, keep moving"
else
mkdir -p "$reportdir"
fi
这有点脆弱,因为您可以在文件名中使用~
,但是您可以改进此脚本,以便仅替换第一个字符,如果它是波浪。