如何对嵌套目录使用mkdir

  • 本文关键字:mkdir 嵌套 bash sed mkdir
  • 更新时间 :
  • 英文 :


我有以下变量显示我应该将报告写到哪里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

这有点脆弱,因为您可以在文件名中使用~,但是您可以改进此脚本,以便仅替换第一个字符,如果它是波浪。

最新更新