Пока вы используете bash и сравниваете текстовые строки, тест [[..]] безопаснее и более гибок.Вы можете использовать && и || внутри них для операторов и / или операторов.Так что это будет работать:
#!/bin/bash
#Ejercicio_4
if [ $# -ne 6 ]
then
echo Número de argumentos incorrecto
else
if [[ "$1" == "$2" && "$1" == "$3" && "$1" == "$4" && "$1" == "$5" && "$1" == "$6" ]]
then
echo Son iguales
else
echo No todas las palabras son iguales
fi
fi
Обратите также внимание, что "==" не является действительным синтаксисом в старом тесте "[" , хотя bash принимает его,Вы должны правильно использовать только односимвольный "=" в тестах с одной скобкой.Однако, если вы сравниваете целые числа, вы должны использовать ((..)) .
Но я настоятельно рекомендую вам не следовать этому методу , так как, когдаколичество аргументов увеличивается, вам нужно будет включить гораздо больше условий в оператор if, что может стать громоздким.Поэтому предпочитают цикл и проверяют первый аргумент со всеми остальными и проверяют, равны ли они, как показано ниже:
#!/usr/bin/env bash
if [ $# -ne 6 ]
then
echo "Number of arguments are lesser than required number 6"
else
number_of_elements=$#
arguments=("$@")
first=("$1")
for (( i=1; i<number_of_elements; i++ )); do
if [[ "$first" != ${arguments[i]} ]];then
break
fi
done
if [[ $i -eq $number_of_elements ]];then
echo "All the argument strings are equal"
else
echo "Not equal"
fi
fi