2011-12-27 2 views
11

Bash 스크립트를 처음 사용합니다. 이 같은 우분투에서 다음과 같은 간단한 스크립트를 실행Bash 스크립트가 Ubuntu Bash에 의해 이해되지 않음

sudo bash -x Script.sh 

출력 :

+ $'\r' 
: command not found 
+ $'\r' 
: command not found 
+ $'\r' 
: command not found 
+ adminEmail=$'[email protected]\r' 
+ $'\r' 
: command not found 
' echo 'database name: 
database name: 
+ read $'dbname\r' 

실제 스크립트 : 모든 '\r' 오류 메시지가

#!/bin/bash 

# Installation script for latest Wordpress website on Ubuntu 
# 
# Kave 
# December 27, 2011 


adminEmail="[email protected]" 

echo "database name:" 
read dbname 

을 오는거야? 심지어 주석이 이해가 안되는 것 같습니다 ...

+0

당신이 라인 엔딩에 문제가있는 것 같습니다,하지만 난이 문제를 해결하는 방법을 모른다 ... 그것은 나를 위해 작동 – evotopid

+0

... 아치 리눅스 i686 – Paul

+1

커맨드 라인에서'dos2unix scriptname scriptname'을하십시오. '\ r'는 캐리지 리턴이고, 윈도우 머신에서 파일을 생성하여 리눅스로 보냈습니까? –

답변

10

파일을 Windows 컴퓨터를 통해 다운로드했으며 CRLF 라인 엔딩 (C 및 관련 언어의 \r\n)이 있습니다.

DOS 라인 끝을 제거하십시오. 예를 들어 vim의 파일을 편집하고 :set fileformat=unix (더하기 Return) 형식을 변경 한 다음 파일을 다시 써주십시오. 다른 방법으로는 tr 명령을 사용할 수 있으며 사용 가능한 항목에 따라 dos2unix 또는 dtou을 사용할 수 있습니다. 당신이로 저장 경우 (예를 들어 리눅스에서 윈도우에 \r\n\n)

를 고정하여 라인 엔딩을 얻을 것이다, 그래서

1

컷과, 우분투에서 편집기로이 페이지에서 코드를 붙여 새 파일 괜찮을 거라 확신합니다.

1

파일에 불필요한 인쇄 할 수없는 문자가있는 것 같습니다. 바이올렛/빔에
파일을 엽니 다 :
눌러 [ESC] 단순히

dos2unix scriptname 

을 다음 :set list

+0

그리고 캐릭터를 나열하면 어떻게 제거할까요? StackOverflow에 오신 것을 환영합니다. 귀하의 대답은 대개의 줄에 있지만 아직 완료되지 않았습니다. –

11

을 입력 명령 모드
에 들어가서 스크립트를 실행합니다.

도구가없는 경우 다음을 수행하여 설치할 수 있습니다.

sudo apt-get install dos2unix 

또는 다음 명령 줄은 파일을 변환 해킹 마십시오.

tr -d '\015' <scriptname> scriptname.new 

또는

sed -i 's/\x0D$//' scriptname 
+0

많은 감사 .... – Houman

관련 문제