2017-12-12 5 views
0

현재 디렉토리에서 보관 디렉토리로 2 개의 파일을 이동하고 파일의 이름 앞에 접두어를 붙이고 파일 확장자를 변경하여 이름을 바꿀 수 있습니다. 내가 그것의 이동 디렉토리 부분을 제거하면 그것은 아래의 스크립트가 작동합니다. 스크립트 및 오류 메시지를 확인하십시오. 아카이브 디렉토리에 대한 권한은 777이므로 파일도 마찬가지입니다.하나의 dir에서 다른 dir로 2 개의 파일을 이동하고 이름을 바꾼 쉘 스크립트

destdir=${/home/dcaceres/load/archive} 

에 : 일을 할 것입니다 아래의 라인을 변경

#!/bin/bash 
    cdate=$(date +%Y-%m-%d) 
    destdir=${/home/dcaceres/load/archive} 
    for file in allcustomer.csv loadcustomer.csv; do 
    mv "$file" "$destdir/$cdate"_"$file"".ARCHIVE" 
    done 

    the error. 
    ./archive_customer_load.sh: line 3: /home/dcaceres/load/archive: Is a directory 

mv: cannot move 'allcustomer.csv' to '/2017-12-12_allcustomer.csv.ARCHIVE': Permission denied 

mv: cannot move 'loadcustomer.csv' to '/2017-12-12_loadcustomer.csv.ARCHIVE': Permission denied 
+0

변경해보십시오'DESTDIR = $'DESTDIR = "/ 홈/dcaceres /로드/아카이브"일' – marcolz

+0

덕분에 {/ 홈/dcaceres /로드/아카이브를}'. –

+0

[Shellcheck] (https://www.shellcheck.net/)도 비슷한 상황에서 도움이 될 수 있습니다. – PesaThe

답변

0

destdir="/home/dcaceres/load/archive" 

설명 :

중괄호는 변수를 사용하는 경우, 필요 그것도된다 반드시 필요한 것은 아닙니다. 배열을 사용할 때 또는 변수 확장을 사용할 때 문자열의 변수 값에 연결하는 경우와 같이 많은 경우에 유용합니다.

여기에 변수 destdirstring을 할당하면 따옴표로 직접 처리 할 수 ​​있습니다. 자세한 내용은

: When do we need curly braces around shell variables?