これは非常に簡単な質問であるに違いありませんが、私は詰まっています(UNIXの専門家ではありません)。 gzをターゲットディレクトリに移動する必要がありますNo such file or directory
。
NOW=$(date +"%Y-%m-%d-%T")
DEST="~/scripts/backup"
SQL_DUMP="db_dump_$NOW.sql.gz"
echo "$SQL_DUMP"
drush sql-dump | gzip -9 > $SQL_DUMP
mv -t $DEST $SQL_DUMP
正しく生成されると、sql.gz
最後のコマンドだけは機能しません。どうすればいいですか?ありがとうございます。
答え1
問題はいいえあなたの命令に従ってくださいmv
。
チルダ拡張~
文字をユーザーのホームディレクトリに置き換えるときにシェルが実行する操作の名前/home/username
。チルダ文字を引用して、これを行わないようにシェルに指示できます。それがあなたがしたことです。
DEST="~/scripts/backup"
DEST
stringに割り当てました~/scripts/backup
。ディレクトリは実際には存在しません。 2つの解決策:
次の文字を引用しないでください
~
。DEST=~/scripts/backup
代わりに使用してください
$HOME
:DEST="$HOME/scripts/backup"
最終デバッグのヒント
オプションset -x
をオンにするには、スクリプトの上部でこれを行うと、コマンドが代わりxtrace
にmv
間違ったディレクトリを使用していることがわかります。 ~/scripts/backup
/home/yourname/scripts/backup
答え2
読むMV手動
SYNOPSIS
mv [SOURCE] [DEST]
$DESTがすでに存在することを確認したい場合があります。
if [ -d ${DEST} ]; then
do something
fi
そうでない場合目次そして-血親ディレクトリを作成するためのパラメータとして。
...
else
mkdir -p ${DEST}
fi