IF 문 AIX(Korn 쉘 스크립트)

IF 문 AIX(Korn 쉘 스크립트)

정보를 수집하는 스크립트를 만들었습니다. 그것이 하는 일 중 하나는 파일이나 디렉토리가 존재하는지 확인하는 것입니다. 그렇다면 /tmp디렉토리에 복사하십시오.

스크립트가 실패합니다.

0403-057 3행의 구문 오류: 'then'이 일치하지 않습니다.

이것은 실패한 진술입니다.

if [ -d /etc/nginx ];
then
cp -R /etc/nginx/* /tmp/
fi

답변1

대본은 매우 좋습니다. 설명하신 오류는 Windows 스타일의 줄 끝이 있다는 의미일 가능성이 높습니다. \r각 줄의 끝에 다음을 추가하여 이를 재현 할 수 있습니다 .

$ cat script.sh
if [ -d /etc/nginx ];
then
cp -R /etc/nginx/* /tmp/
fi
$ sed 's/$/\r/' script.sh 
$ ksh script.sh 
script.sh: syntax error at line 5: `if' unmatched

Windows 시스템에서 파일을 편집했을 수 있으며 \r\n일반적인 *nix \n줄 끝 대신 줄 끝이 삽입되었습니다. 그냥 삭제하세요:

sed -i 's/\r//' script.sh  

그러나 이것은 AIX에서는 작동하지 않을 수도 있습니다 sed. 그렇지 않은 경우 대신 다음을 사용하십시오.

sed 's/\r//' script.sh  > tempFile && mv tempFile script.sh

또는

tr -d '\r' < script.sh > tempFile && mv tempFile script.sh

관련 정보