予期しないタグ「elif」の近くに構文エラーがあります。

予期しないタグ「elif」の近くに構文エラーがあります。

7行目でエラーが発生します。どんなアイデアがありますか?空席があるかどうか確認してみましたがありませんでした。

#!/bin/bash
if test $# -eq 0
then
    echo "No arguments"
elif test $# -eq 1
    echo "$1"
elif test $# -eq 2
    echo "$1 $2"
else
    echo "More than 2 arguments"
fi

答え1

if/elif/else/fi 構文では、then各「elif」の後に次のようになります。

#!/bin/bash
if test "$#" -eq 0
then
    printf 'No arguments\n'
elif test "$#" -eq 1
then
    printf '%s\n' "$1"
elif test "$#" -eq 2
then
    printf '%s %s\n' "$1" "$2"
else
    printf 'More than 2 arguments\n'
fi

私もsをsechoに置き換えますprintfそして$# インスタンスへの参照

答え2

thenその後、1つが必要ですelif

#!/bin/bash
if test $# -eq 0
then
    echo "No arguments"
elif test $# -eq 1
then
    echo "$1"
elif test $# -eq 2
then
    echo "$1 $2"
else
    echo "More than 2 arguments"
fi

関連情報