Shell
腳本中的 mv 命令問題
這一定是一個很容易解決的問題,但我被困住了(不是 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
.