Je voudrais savoir s'il est possible d'avoir plus de deux instructions dans une instruction if
lorsque vous écrivez un script Shell?
username1="BOSS1"
username2="BOSS2"
password1="1234"
password2="4321"
if(($username == $username1)) && (($password == password1)) ||
(($username == $username2)) && (($password == password2)) ; then
Cela ne fonctionne pas. Mais existe-t-il un moyen de le faire fonctionner?
Merci!
si vous utilisez /bin/sh
vous pouvez utiliser:
if [ <condition> ] && [ <condition> ]; then
...
fi
si vous utilisez /bin/bash
vous pouvez utiliser:
if [[ <condition> && <condition> ]]; then
...
fi
Vous essayez de comparer des chaînes dans une commande arithmétique (((...))
). Utilisez plutôt [[
.
if [[ $username == "$username1" && $password == "$password1" ]] ||
[[ $username == "$username2" && $password == "$password2" ]]; then
Notez que j'ai réduit cela à deux tests distincts joints par ||
, Avec le &&
Déplacé à l'intérieur des tests. En effet, les opérateurs Shell &&
Et ||
Ont la même priorité et sont simplement évalués de gauche à droite. Par conséquent, il n'est généralement pas vrai que a && b || c && d
Est équivalent au ( a && b ) || ( c && d )
Prévu.