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 に答える