bash 中的间接整数

bash 中的间接整数

我有一个 bash 脚本,其中包含以下函数:

random_move() {
  local sq
  while :; do
    sq=$(( $RANDOM % $# + 1 ))
    sq=${!sq}
    [ $sq -ne ${last:-666} ] && break
  done
  move "$sq"
}

使用一个或多个参数调用此函数。那里的间接点(sq=${!sq}线)有什么意义?

答案1

首先,为 $sq 分配一个从 1 到函数参数数量的随机数。然后,通过间接寻址将第 sq 个参数分配给它。例如,如果sq=4,那么${!sq}意味着${4},即$4

此外,$last 的值(如果未设置则为 666)永远不会“移动”,如果选择它,则循环不会停止并生成另一个值。

相关内容