2014-09-26 3 views
0

에서 찾을 수 없습니다

sh -x export_db.sh 
+ $'\r' 
: command not found2: 
+ ROOT_PATH=$'/var/www/\r' 
+ msql_psw=$'cc\r' 
+ mysql_login=$'bb\r' 
+ mysql_db_name=$'aa\r' 
+ $'\r' 
: command not found8: 
+ echo START MYSQL $'DUMP\r' 
START MYSQL DUMP 
+ $'\r' 
: command not found10: 
++ date +%Y-%m-%d 
+ NOW=$'2014-10-02\r' 
+ SQLFILE=$'log-2014-10-02\r.sql\r' 
+ mysqldump --add-drop-table -u $'bb\r' --password= $'aa\r' 
: No such file or directory/www/ 
+1

여기서 유일하게 잘못된 점은'-u "$ mysql_login"--password = "$ mysql_psw"'등 따옴표가 없다는 것입니다.'sh -x your.script'를 사용하여 스크립트를 실행하십시오. 실제로 실행중인 상태를 확인하십시오. 명령에서 변수를 대체하지 않으면 _ 표시됩니다. –

+2

아 - 실제로'$ ROOT_PATH = foo'는 매우 잘못되었습니다. 'ROOT_PATH = foo' 일 필요가 있습니다. –

+0

$ root_path는 오타입니다. 스크립트에서 $를 사용하지 않았습니다. 나는 그것을 시도하고 알려 드리겠습니다. 감사합니다 – LEM01

답변

4

$'\r은 캐리지 리턴 (CR) 문자를 작성하는 쉘 방식입니다. DOS 형식의 텍스트 파일은 CRLF로 끝나야합니다 (쉘 형식, $'\r\n'). 유닉스 텍스트 파일은 $ \n으로 끝납니다. 따라서 UNIX에서 DOS 형식의 텍스트 파일을 읽을 때 각 행의 끝에 $ \r이 추가로 나타납니다. 그 너머


(단지 질문의 이전 버전에 관련된 장소에서) 몇 가지 메모 :

확장 사업자 지정에 사용되지 않으므로

$ROOT_PATH=/var/www/ 

필요가되게합니다

ROOT_PATH=/var/www 

그 밖에도 모든 확장에서 따옴표를 사용하십시오. 즉 :

그렇지
mysqldump \ 
    --add-drop-table \ 
    -u "$mysql_login" \ 
    --password="$mysql_psw" \ 
    "$mysql_db_name" \ 
    >"$ROOT_PATH/$SQLFILE" 

는 변수 등 마지막

, IFS, 글로브 발포로 분할한다 - 변수는 치환되지 않았는지 등 굵은 주장 할 때, 그것을 증명하려고 스크립트에서 set -x을 사용하거나 #!/bin/sh -x으로 시작하거나 sh -x yourscript을 사용하여 수동으로 실행하여 쉘이 실제로 실행 된 후 실행되는 명령을 기록하십시오.

+0

답변을 주셔서 감사합니다. 불행히도 여전히 작동하지 않습니다. 내가 얻은 결과로 내 게시물을 편집했습니다. – LEM01

+0

이 답변의 유효성을 검사 하겠지만 초기 게시물에 몇 가지 의견을 추가했습니다. 감사! – LEM01

+0

질문에 대한 편집이 아닌 사용자의 답변을 _as an answer_를 추가하십시오. –

관련 문제