我想知道在编写shell脚本时,if
语句中是否可以有两个以上的语句?
username1="BOSS1"
username2="BOSS2"
password1="1234"
password2="4321"
if(($username == $username1)) && (($password == password1)) ||
(($username == $username2)) && (($password == password2)) ; then
这不起作用。但有没有办法让它发挥作用?
谢谢!
答案 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 )
相同,通常不正确。