So drucken Sie eine „true if“-Bedingung in einem Shell-Skript

So drucken Sie eine „true if“-Bedingung in einem Shell-Skript

Ich schreibe ein Skript, um einige Einstellungen je nach Standort zu ändern, und dazu habe ich den Hostnamen als Benchmark ausgewählt. Mein Ziel ist, dies zu tun, wenn meine Hostnamenbedingung erfüllt wird. Dazu schreibe ich ein Shell-Skript, das einige Dinge in einer if-Anweisung vergleicht. Ich möchte die erfolgreiche if-Bedingung ausgeben, finde aber keine Möglichkeit dazu. Hier ist mein Skript.

#!/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

Ich kann keine Möglichkeit finden, die Bedingung auszudrucken, die in der if-Anweisung wahr ist.

Antwort1

Speichern Sie die gültigen Standorte in einer einzigen Variablen und führen Sie eine Schleife darüber aus:

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

Ergebnis:

This is part of europe

Antwort2

Sie können

if [ $hstname == $location1 ] || [ $hstname == $location2 ] || [ $hstname == $location3 ] ; then

Aber die Leerzeichen nicht vergessen!!

Es wäre vielleicht besser, „Case“ mit allen Standorten in der Bedingung zu verwenden.

verwandte Informationen