쉘 스크립트에서 조건이 true인 경우 인쇄하는 방법

쉘 스크립트에서 조건이 true인 경우 인쇄하는 방법

위치에 따라 몇 가지 설정을 변경하는 스크립트를 작성 중이며 이를 수행하기 위해 호스트 이름을 벤치마크로 선택했습니다. 내 목표는 내 호스트 이름 조건이 충족되면 다음을 수행하는 것입니다. 이를 위해 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

유효한 위치를 단일 변수에 저장하고 반복합니다.

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

하지만 공백을 잊지 마세요!!

조건의 모든 위치에 "대소문자"를 사용하는 것이 더 나을 수도 있습니다.

관련 정보