쉘 스크립트 오류(: 찾을 수 없음 [해당 파일 또는 디렉터리 없음]) [중복]

쉘 스크립트 오류(: 찾을 수 없음 [해당 파일 또는 디렉터리 없음]) [중복]

Linux 서버에서 다음 스크립트를 사용하고 있습니다. 이것은 다음과 같이 주어진다:

: not found [No such file or directory]

스크립트는 다음과 같습니다.

# ------------------------------------------------------------------
# K.Sugunan Host health check
#           Description
#
#           This script to initiate health check on servers.
#           It will check for CPU, memory and some connectivity with 
#           up stream and down stream system.
#
# ------------------------------------------------------------------

# Applying initial variables and loading config parameters
DOCROOT=$(pwd)"/"
TIME_NOW=$(date +"%Y-%m-%d %H:%M:%S")

echo $DOCROOT

. $DOCROOT"config/main.sh"
. $DOCROOT"config/web.sh"
. $DOCROOT"config/telnet.sh"

echo $CPU_A

오류는 다음과 같습니다.

: not found [No such file or directory]
: not found [No such file or directory]
/home/sugunan/phobos/
: not found [No such file or directory]
: cannot open [No such file or directory]os/

다음 방법을 사용하여 스크립트를 실행합니다.

ksh poc.sh
sh poc.sh
./poc.sh

위의 모든 내용은 비슷한 오류를 제공합니다. 포함해도 #!/bin/bash여전히 오류가 발생합니다. 나도 #!/bin/ksh그것을 시도했습니다 #!/usr/bin/ksh. 이들 모두 오류가 발생합니다. 이 서버에 문제가 발생한 원인은 무엇일까요?

답변1

빈 줄에 보이지 않는(인쇄할 수 없는) 문자가 포함되어 있고 서버가 해당 문자를 명령 이름인 것처럼 실행하려고 시도하는 것 같습니다. 따라서 오류가 발생합니다 : not found [No such file or directory]. 빈 줄을 제거하거나 실제로 비어 있는지 확인하세요.

편집: OP의 의견은 코드가 Windows에서 작성되었으므로 이것이 실제로 사실임을 확인합니다. Windows에서 ASCII 텍스트 파일은 각 줄을 개행 + 캐리지 리턴 문자로 끝나는 반면 UNIX는 개행만 사용합니다.

이 문제를 해결하려면 다음을 수행할 수 있습니다.

  • Linux의 편집기에 코드를 직접 복사하여 붙여넣기
  • Windows 편집기가 줄 끝 문자를 UNIX 표준으로 변환하도록 설정되어 있는지 확인하세요.
  • dos2unixWindows ASCII 파일을 UNIX 파일로 변환하려면 이 명령을 사용하십시오.

관련 정보