为什么我的 if else 不起作用

0 bash

confirm() {
local YES="Y"
local NO="N"
local CONT="C"
    while : 
    do
    echo –n "(Y)es/(N)o/(C)ontinue? {Y] "
        read answer
        answer=`echo "$answer" | tr '[a-z]' '[A-Z]'`
        echo "$answer"
        if [ "$answer"=$YES ]
        then
                echo "YES"
                return 0
        elif ["$answer"="$CONT" ]
        then
                echo "skip skip skip"
                return 2
        elif [ "$answer"="$NO" ]
        then
                echo "NO"
                return 1
        fi
    done
}
Run Code Online (Sandbox Code Playgroud)

YES无论输入是什么,输出总是回显并返回 0。

rex*_*ans 5

您缺少运算符周围的强制性空格,即=在您的情况下:

if [ "$answer" = "$YES" ]
Run Code Online (Sandbox Code Playgroud)

这涉及每一种情况。