構文エラー「elif」が予期せず予想された後[閉じる]

構文エラー「elif」が予期せず予想された後[閉じる]

エラーを修正するために私のコードに関する新しい質問を投稿しています。

    if [ -f /etc/centos-release ]; then
        OS="CentOs"
        VERFULL=$(sed 's/^.*release //;s/ (Fin.*$//' /etc/centos-release)
        VER=${VERFULL:0:1} # return 6 or 7
    elif [ -f /etc/lsb-release ]; then
        OS=$(grep DISTRIB_ID /etc/lsb-release | sed 's/^.*=//')
        VER=$(grep DISTRIB_RELEASE /etc/lsb-release | sed 's/^.*=//')
    elif [ -f /etc/os-release ]; then
        OS=$(grep -w ID /etc/os-release | sed 's/^.*=//')
        VER=$(grep VERSION_ID /etc/os-release | sed 's/^.*"\(.*\)"/\1/')
     else
        OS=$(uname -s)
        VER=$(uname -r)
    fi

ここのコードはelif [ -f /etc/lsb-release ]; thenエラーを示しています。

ベストアンサー1

シェルが公開したスクリプトの5行目でこのエラーを報告した場合、then最初の行に目に見えないエラーがあるはずです。

レビュースクリプトを使用して、cat -A行に予期しないALTスペースまたは他の印刷できない文字があるかどうかを確認できます。cat -A各行の末尾に、改行文字、プレフィックス付きの制御文字、プレフィックスセットのビット8を持つ印刷できない文字が表示されます。たとえば、TAB文字はで表されます。$^M-^I

出力がcat -A少し歪んで見えるかもしれませんが、印刷できない文字がないことを確認するのに最適な方法です。

おすすめ記事