シェルスクリプトで条件が真の場合を出力する方法

シェルスクリプトで条件が真の場合を出力する方法

場所に応じていくつかの設定を変更するスクリプトを書いています。これを行うために、ホスト名をベンチマークとして選択しました。私の目的は、ホスト名の条件が満たされた場合にこれを実行することです。このために、if ステートメントでいくつかのものを比較するシェル スクリプトを書いています。条件が満たされた場合に成功を印刷したいのですが、その方法がわかりません。これが私のスクリプトです。

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

if ステートメントで true になった条件を印刷する方法が見つかりません。

答え1

有効な場所を 1 つの変数に保存し、ループします。

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

結果:

This is part of europe

答え2

使用できます

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

ただし、スペースを忘れないでください!!

条件内のすべての場所で「case」を使用する方が良いかもしれません。

関連情報