if中的两个条件

And*_*rek 21 bash if-statement conditional-statements

我正在尝试编写一个脚本,它将读取两个选项,如果它们都是"y",我希望它说"Test Done!" 如果他们中的一个或两个不是"y"我想让它说"测试失败!" 这是我想出的:

echo "- Do You want to make a choice ?"
read choice

echo "- Do You want to make a choice1 ?"
read choice1

if [ "$choice" != 'y' ] && [ "$choice1" != 'y' ]; then
echo "Test Done !"
else
echo "Test Failed !"
fi
Run Code Online (Sandbox Code Playgroud)

但当我用"y"回答这两个问题时,它说"测试失败了!" 而不是"测试完成!".当我用"n"回答这两个问题时,它说的是"测试完成!" 我做错了什么?

abh*_*kdz 38

你正在检查错误的情况.

if [ "$choice" != 'y' ] && [ "$choice1" != 'y' ];
Run Code Online (Sandbox Code Playgroud)

choice!='y'和时choice1!='y',上述陈述是正确的,因此程序正确打印"Test Done!" .

更正的脚本是

echo "- Do You want to make a choice ?"
read choice

echo "- Do You want to make a choice1 ?"
read choice1

if [ "$choice" == 'y' ] && [ "$choice1" == 'y' ]; then
    echo "Test Done !"
else
    echo "Test Failed !"
fi
Run Code Online (Sandbox Code Playgroud)