motd 헤더 구문 오류가 발생하여 motd를 활성화하는 데 도움이 필요합니다.

motd 헤더 구문 오류가 발생하여 motd를 활성화하는 데 도움이 필요합니다.

내 우분투 서버에서 motd 스크립트를 수정하려고 합니다. /etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer 왜냐하면 " "라는 이상한 이유로 이상한 구문 오류가 계속 발생하기 때문입니다. line 31: syntax error: unexpected end of file그런데 코드가 없는 빈 공간을 가리키고 있어 정말 혼란스럽습니다.

또 다른 문제는 systemctl status motd를 입력할 때마다 화면에 이런 메시지가 표시된다는 것입니다.

Unit motd.service could not be found.

마스킹되는 프로세스에 문제가 있어서 이 링크의 솔루션을 사용했습니다.systemctl, 마스크 해제 방법.

나는 한동안 이 문제와 싸우고 있지만 문제를 해결하는 데 진전을 보이고 있으므로 도움을 주시면 감사하겠습니다.

파일 내용은 이 텍스트 아래에 있습니다.

#!/bin/sh
#
#    00-header - create the header of the MOTD Copyright (c) 2013 Nick Charlton Copyright (c)
#    2009-2010 Canonical Ltd.
#
#    Authors: Nick Charlton <[email protected]>
#             Dustin Kirkland <[email protected]>
#
#    This program is free software; you can redistribute it and/or modify it under the terms
#    of the GNU General Public License as published by the Free Software Foundation; either
#    version 2 of the License, or (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
#    without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#    See the GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along with this
#    program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
#    Floor, Boston, MA 02110-1301 USA.

[ -r /etc/lsb-release ] && . /etc/lsb-release

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
        # Fall back to using the very slow lsb_release utility
        DISTRIB_DESCRIPTION=$(lsb_release -s -d) fi

figlet $(Ourserver) printf "\n"
printf "Welcome to %s (%s).n" "$DISTRIB_DESCRIPTION" "$(uname -r)" printf "\n"

답변1

" line 31: syntax error: unexpected end of file"은(는) 짝을 이루는 문자 수가 홀수이기 때문에 발생합니다. "쌍을 이룬" 문자란 반드시 일치하는 문자로 나타나야 하는 문자를 의미하며, 그 사이에 문자가 있을 수도 있습니다. 예를 들어, ", ', (, [, {등입니다. 인용문 수를 계산하세요.

files="/etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer"
grep --color=always -E "\"|'|\(|\[|\{|\}|\]|\)" $files

답변2

오류는 25번째 줄에서 발생한 것으로 보입니다.

25          DISTRIB_DESCRIPTION=$(lsb_release -s -d) fi

fia 또는 개행 문자 앞에 구분 기호가 있어야 합니다 ;(적절한 들여쓰기가 유지되므로 후자를 제안합니다). 그래서

23  if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
24          # Fall back to using the very slow lsb_release utility
25          DISTRIB_DESCRIPTION=$(lsb_release -s -d)
26  fi

관련 정보