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번째 매개변수를 할당합니다. 예를 들어 if 는 sq=4, 즉 을 ${!sq}의미합니다 .${4}$4

또한 $last 값(설정되지 않은 경우 666)은 "이동"되지 않으며, 선택한 경우 루프가 중지되지 않고 다른 값을 생성합니다.

관련 정보