변수 2의 값을 기준으로 변수 1의 값을 설정합니다.

변수 2의 값을 기준으로 변수 1의 값을 설정합니다.

다음과 같이 실행되는 bash 스크립트가 있습니다

./myscript.sh --tourney --port 22456 --matchid 5

라는 변수가 있습니다 matchteams. 이제 ID를 기반으로 한 경기 팀 목록이 있습니다. matchteamsmatchid 값을 기준으로 변수 값을 설정하는 방법입니다 .

체크리스트처럼

1= "asde v/s rty"
2= "ggg v/s ddd"
3= "hhh v/s ddd"
4= "udfhi v/s dfjsn"
5= "gjhi v/s fgt"

위의 설명에 따르면 matchid=5값이 어떻게 자동으로 설정될 수 있습니까?matchteams="gjhi v/s fgt"

매개변수를 설정하는 코드의 일부입니다.

while [ $# -gt 0 ] ; do
    case $1 in
       '--pub') fun2exec="loadpubserveripip" ;;
       '--tourney') fun2exec="loadtourneyserver" ;;
       '--standby') fun2exec="loadpubserverwg" ;;
       '--help') fun2exec="help" ;;
       '--port') port="$2" ; shift ;;
       '--matchid') matchid="$2" ; shift ;;
       *) echo "Argument Error, Please type bash script.sh --help for All Available Arguments"; exit 1 ;;
    esac
    shift
done

if [ -z "$fun2exec" ] ; then
    help
    exit 2
fi

if [ -z "$port" ] ; then
    echo "Please Provide Server Port 11011/22022/33033/44044/55055"
    exit 3
fi

if [ -z "$matchid" ] ; then
    echo "Please Provide MatchID"
    exit 3
fi

$fun2exec

exit 0

답변1

배열을 사용하십시오:

matchlist=(
    [1]="asde v/s rty"
    [2]="ggg v/s ddd"
    [3]="hhh v/s ddd"
    [4]="udfhi v/s dfjsn"
    [5]="gjhi v/s fgt"
)

[n]=것은 문자열을 다음에 할당합니다.특정한인덱스 bash가 없으면 자동으로 단조롭게 증가하는 인덱스를 얻지만 0부터 시작합니다.

그런 다음 이 배열을 다음과 함께 사용하십시오 matchid.

matchteams=${matchlist[matchid]}

심지어

matchteams=${matchlist[matchid]?Invalid match ID $matchid}

$matchid...마지막 문자열이 배열에 존재하지 않는 인덱스에 해당하는 경우 인쇄됩니다 matchlist.

$ matchid=4
$ matchteams=${matchlist[matchid]?Invalid match ID $matchid}
$ echo "$matchteams"
udfhi v/s dfjsn
$ matchid=6
$ matchteams=${matchlist[matchid]?Invalid match ID $matchid}
bash: matchlist[matchid]: Invalid match ID 6

(스크립트의 경우 이 오류로 인해 쉘도 종료됩니다.)

관련 정보