script shell unix pour vérifier trois variables sont les mêmes

Je veux vérifier si les trois variables sont identiques, puis imprimer

if [ "$x1" == "$x2" == "$3" ]; then echo "all are same" fi 

Je reçois cette erreur:

[: trop d’arguments

Vous ne pouvez pas comparer trois variables à la fois. Au lieu de cela, comparez-les en blocs de deux:

 if [ "$x1" = "$x2" ] && [ "$x2" = "$x3" ]; then echo "all are same" fi 

Puisque vous utilisez bash , je vous recommande d’utiliser

 if [[ "$x1" == "$x2" && "$x2" == "$x3" ]]; then 

Si vous avez besoin / souhaitez conserver la compatibilité POSIX en utilisant [ ... ] , vous ne devez pas utiliser == .

 if [ "$x1" = "$x2" ] && [ "$x2" = "$x3" ]; then 

bash vous permet d’utiliser le non-standard == avec [ , mais il est inutile de mélanger les comportements standard et non standard.

utilisation:

 if [ "$x1" = "$x2" -a "$x2" = "$x3" ] 

testé ici