我有一个脚本可以将用户输入作为绝对路径(使用fselect对话框)。
backupdir=$(user_select "choose a directory backup destination");
我用过
tar cvzf backup.tar.gz $backupdir
然而,这包括绝对目录路径(* 1),所以我尝试(使用脚本):
tar czvf backup.tar.gz -C $PATH directory-to-backup
因此,在我的脚本中我可以使用:
pathtodir = dirname $backupdir
获取备份目录的$ PATH但我需要备份目录的名称,即:
dirname = ..
tar czvf backup.tar.gz -C $PATH $dirname
如何获取$ dirname的名称?
1 - “从成员名称中删除前导'/'
答案 0 :(得分:1)
好吧,说实话,我一开始就难以弄清楚问题。我想我们在评论中对此进行了排序。
所以你有$backupdir
,其中包含备份目录的绝对路径,加上$pathtodir
,它是备份目录的父目录。
现在可以在Bash中使用字符串替换,如下所示:
# Replace $pathtodir with empty string inside $backupdir
relativepath=${backupdir//$pathtodir/}
# Now remove the leading slash, if any
relativepath=${relativepath#/}
如果我误解了某些内容,请告诉我,我会相应地调整答案。