다음과 같이 실행되는 bash 스크립트가 있습니다
./myscript.sh --tourney --port 22456 --matchid 5
라는 변수가 있습니다 matchteams
. 이제 ID를 기반으로 한 경기 팀 목록이 있습니다. matchteams
matchid 값을 기준으로 변수 값을 설정하는 방법입니다 .
체크리스트처럼
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
(스크립트의 경우 이 오류로 인해 쉘도 종료됩니다.)