스크립트의 mv 명령 문제

스크립트의 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마지막 명령만 작동하지 않습니다. 어떻게 사용해야 하나요? 감사해요.

답변1

문제는아니요당신의 명령을 따르십시오 mv.

물결표 확장~문자를 사용자의 홈 디렉토리로 바꿀 때 쉘이 수행하는 작업의 이름입니다 /home/username. 물결표 문자를 인용하여 이를 수행하지 않도록 쉘에 지시할 수 있습니다. 그게 바로 네가 한 일이야

DEST="~/scripts/backup"

DESTstring 에 할당했습니다 ~/scripts/backup. 디렉토리가 실제로 존재하지 않습니다. 두 가지 솔루션:

  • 다음 문자를 인용하지 마세요 ~.

    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

관련 정보