意外标记“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

我也曾将你的echos 替换为printfs引用 $# 的实例

答案2

你需要一个then之后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

相关内容