【问题标题】:When user doesnt enter any choice [duplicate]当用户没有输入任何选择时[重复]
【发布时间】:2022-01-22 13:06:50
【问题描述】:

我需要让用户在 unix shell 脚本中输入输入以在代码块中继续进行。只有当用户输入 Y(区分大小写)时才需要显示“Hi”,否则只显示“Bye”。当用户按下键盘上的 Enter 键或不输入任何输入时,应显示“Bye”。

另外,请注意,我需要根据用户输入显示任一回显消息,最后还要到达“继续执行下一行代码”代码。

当用户按下回车键时,我在 else 条件下遇到错误 [: ==: unary operator expected

echo 'Do you want to proceed?'
read i
if [ $i == 'Y' ]
then
   echo 'Hi'
else
   echo 'Bye'
fi

echo 'Proceeding to next line of code'

【问题讨论】:

    标签: linux shell unix vi


    【解决方案1】:

    只需在变量中添加双引号:

    echo 'Do you want to proceed?'
    read i
    if [ "$i" == 'Y' ]
    then
        echo 'Hi'
    else
        echo 'Bye'
    fi
    echo 'Proceeding to next line of code'
    

    【讨论】:

    【解决方案2】:

    你应该使用 elif:

    echo 'Do you want to proceed?'
    read i
    if [ $i == 'Y' ]
    then
       echo 'Hi'
    elif [$i == 'N']
       echo 'Bye'
    else
       echo 'you are enterd a unknow value'
    fi
    
    echo 'Proceeding to next line of code'
    
    

    【讨论】:

    • [ $i == 'Y' ] 本身是不可靠的,[ "$i" = Y ] 更值得信赖,而没有空格的[$i根本无法工作。 (类似地,'N'] 必须是 N ]'N' ],但无论如何必须将 N] 放在一个单独的单词中)
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多