Estoy escribiendo un script para cambiar algunas configuraciones según la ubicación y para ello seleccioné el nombre de host como punto de referencia. Mi objetivo es que, si la condición de mi nombre de host se cumple, haga esto. Para esto, estoy escribiendo un script de shell que compara algunas cosas en la declaración if, quiero imprimir la condición if exitosa pero no encuentro una manera de hacerlo. Aquí está mi guión.
#!/bin/bash
location1=india
location2=eurpoe
location3=asia
location4=usa
location5=africa
location6=tokyo
echo "Checking Hostname"
hstname=`hostname | cut -f1 -d'-'`
echo "This is the $hstname"
#if [ $hstname == $location1 ] && [ $hstname == $location2 ] && [ $hstname == $location3 ] && [ $hstname == $location4 ] && [ $hstname == $location5 ] && [ $hstname == $location6 ] ;
if [[ ( $hstname == $location1 ) || ( $hstname == $location2 ) || ( $hstname == $location3 ) || ( $hstname == $location4 ) || ( $hstname == $location5 ) || ( $hstname == $location6 ) ]] ;
then
echo "This is part of " ;##Here i want to print true condition of above if statement##
else
echo "Please set Proper Hostname location wise." ;
fi
No puedo encontrar una manera de imprimir la condición que se cumplió en la declaración if.
Respuesta1
Almacene las ubicaciones válidas en una sola variable y recorra sobre ella:
VALID_LOCATIONS="india europe asia usa africa tokyo"
hstname=`hostname | cut -f1 -d'-'`
for LOC in $VALID_LOCATIONS
do
if [[ $LOC == $hstname ]]; then
LOCATION=$LOC
fi
done
if [[ $LOCATION == "" ]]; then
echo "Please set Proper Hostname location wise."
else
echo "This is part of $LOCATION"
fi
Resultado:
This is part of europe
Respuesta2
Puedes usar
if [ $hstname == $location1 ] || [ $hstname == $location2 ] || [ $hstname == $location3 ] ; then
¡¡Pero no te olvides de los espacios!!
Quizás debería ser mejor usar "case" con todas las ubicaciones en la condición.