Shell

腳本中的 mv 命令問題

  • February 18, 2012

這一定是一個很容易解決的問題,但我被困住了(不是 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正確創建,只有最後一個命令不起作用。我應該如何使用它?謝謝。

問題在於您的mv命令。

波浪號擴展~是 shell 在用使用者的主目錄替換字元時所做的名稱,例如/home/username. 可以通過引用波浪號來告訴 shell 不要這樣做。這正是你所做的

DEST="~/scripts/backup"

您已分配給DEST字元串~/scripts/backup。這個目錄實際上並不存在。兩種解決方案:

  • 不要引用~字元:
DEST=~/scripts/backup
  • 改用$HOME
DEST="$HOME/scripts/backup"

最後的調試技巧

放在set -x腳本頂部以打開該xtrace選項。如果您這樣做了,您會看到該mv命令使用了錯誤的目錄,~/scripts/backup而不是/home/yourname/scripts/backup.

引用自:https://unix.stackexchange.com/questions/31988