다음 기능을 가진 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)은 "이동"되지 않으며, 선택한 경우 루프가 중지되지 않고 다른 값을 생성합니다.