정보를 수집하는 스크립트를 만들었습니다. 그것이 하는 일 중 하나는 파일이나 디렉토리가 존재하는지 확인하는 것입니다. 그렇다면 /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