1

我有一个脚本,它从用户那里获取输入作为绝对路径(使用 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 - “从成员名称中删除前导 `/'”

4

1 回答 1

1

好吧,老实说,一开始我很难弄清楚这个问题。我想我们在评论中对此进行了排序。

所以你有$backupdir哪个包含备份目录的绝对路径,加上$pathtodir哪个是备份目录的父目录。

您现在可以在 Bash 中使用字符串替换,如下所示:

# Replace $pathtodir with empty string inside $backupdir
relativepath=${backupdir//$pathtodir/}
# Now remove the leading slash, if any
relativepath=${relativepath#/}

如果我仍然误解了某些内容,请告诉我,我会相应地调整答案。

于 2012-04-09T12:25:03.130 回答