根据变量2的值设置变量1的值

根据变量2的值设置变量1的值

我有一个 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.如果没有这个,您会自动获得单调递增的索引,但它们从零开始。

然后将此数组与以下内容一起使用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

(如果是脚本,该错误还会终止 shell。)

相关内容