if语句shell脚本中的多个条件

时间:2014-05-08 13:03:41

标签: shell if-statement conditional account

我想知道在编写shell脚本时,if语句中是否可以有两个以上的语句?

username1="BOSS1"
username2="BOSS2"
password1="1234"
password2="4321"

if(($username == $username1)) && (($password == password1)) || 
  (($username == $username2)) && (($password == password2)) ; then

这不起作用。但有没有办法让它发挥作用?

谢谢!

2 个答案:

答案 0 :(得分:29)

如果使用/bin/sh,您可以使用:

if [ <condition> ] && [ <condition> ]; then
    ...
fi

如果使用/bin/bash,您可以使用:

if [[ <condition> && <condition> ]]; then
    ...
fi

答案 1 :(得分:10)

您正在尝试比较算术命令(((...)))中的字符串。请改用[[

if [[ $username == "$username1" && $password == "$password1" ]] ||
   [[ $username == "$username2" && $password == "$password2" ]]; then

请注意,我已将此减少为由||加入的两个单独的测试,&&在测试中移动。这是因为shell运算符&&||具有相同的优先级,并且只是从左到右进行求值。因此,a && b || c && d与预期的( a && b ) || ( c && d )相同,通常不正确。