MySQL データベースをバックアップするスクリプトです。
#!/bin/bash
FILE=minime.sql.`date +%F`
DBSERVER=127.0.0.1
DATABASE=wordpress
USER=root
PASS=789789
unalias rm 2> /dev/null
rm $FILE 2> /dev/null
rm $FILE.gz 2> /dev/null
mysqldump --opt --user=$USER --password=$PASS $DATABASE > $FILE
gzip $FILE
echo "$FILE.gz was created"
ls -l $FILE.gz
コマンドは、3行が古いバージョンのファイルを削除するためのものであることを示していますが、なぜrmのエイリアスを解放し、stderrを/ dev / nullにリダイレクトする必要があるのかわかりません。
unalias rm 2> /dev/null
rm $FILE 2> /dev/null
rm $FILE.gz 2> /dev/null
答え1
rm
スクリプト作成者は、コマンドが既存のステートメントによって変更されていないことを確実に確認したい場合がありますalias
。
作成者は/bin/rm
代わりに絶対パスを使用してこれを実行できますrm
。
RM="/bin/rm"
$RM $FILE ...
rm
rm -f
そのオプションが同じことを行うため、作成者がSTDERRにリダイレクトすることを選択した理由を理解できません。