motd ヘッダー構文エラーが発生しており、motd を有効にするのに助けが必要です

motd ヘッダー構文エラーが発生しており、motd を有効にするのに助けが必要です

Ubuntu サーバー上の 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。ただし、これはコードのない空のスペースを指しており、非常に混乱を招きます。

もう 1 つの問題は、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

fi- の前には区切り文字、つまり aまたは改行が必要です;(インデントが適切に維持されるため、後者をお勧めします)。

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

関連情報