0

/home/というディレクトリのバックアップを作成するスクリプトを作成していますbackup.sh。バックアップが完了したら、スクリプトがバックアップのサイズをメガバイト単位で出力するようにします。私が問題を抱えている行は次のとおりです。

# creates an approximate size of the file + the file location
backup_text=$(du $new_backup)
# take off the file name at the end and add an 'M' to specify Megabytes
backup_text=${backup_text%[:blank:]*}M 
# print string to console
echo $backup_text

これが私が得続ける出力です:

20 /backups/Thu_Aug_22_15:52M

ご覧のとおり、バックアップ サイズは 20M です。これは正しいですが、/backups/...一部が残っています。スクリプトで何が間違っていましたか?

申し訳ありませんが、おそらく初歩的な質問です。スクリプトを書き始めたばかりです =)

4

3 に答える 3

2

置換パターンの拡張

これをBash パターン マッチングで処理する方法はいくつかありますが、私はextglob による置換展開を使用します。例えば:

$ shopt -u extglob
$ backup_text='foo bar'
$ echo ${backup_text/+([[:blank:]])*/}
foo
于 2013-08-22T21:04:48.710 に答える
1

文字クラスの括弧を 2 倍にします。

backup_text=${backup_text%[[:blank:]]*}M 

ブラケット式全体 ( [:blank:]) は、文字クラス ( ) 内の単一の「文字」 (トークン) としてカウントされる[...]ため、両方のブラケットが必要です。

于 2013-08-22T21:05:59.393 に答える