REOPEN: 매개변수 확장에서 산술 확장을 수행하시겠습니까? [복사]

REOPEN: 매개변수 확장에서 산술 확장을 수행하시겠습니까? [복사]

다시 열어주세요. 여기서는 해결 방법뿐만 아니라 작동하지 않는 이유를 묻고 있기 때문에 이것은 중복되지 않습니다.


Bash 매뉴얼에 따르면

물결표 확장,매개변수 및 변수 확장,산술 확장및 명령 대체(왼쪽에서 오른쪽으로 수행됨)

내가 이해한다면http://unix.stackexchange.com/a/270324/674올바르게 "왼쪽에서 오른쪽으로"는 "중괄호 확장, 물결표 확장, 매개변수 및 변수 확장, 산술 확장 및 명령 대체"가 동일한 우선순위를 갖는다는 것을 의미합니다.

그러면 매개변수 확장에 산술 확장을 사용할 수 있습니까? (즉, 1단계 재귀)

그렇지 않다면 "물결표 확장, 매개변수 및 변수 확장, 산술 확장, 명령 대체(왼쪽에서 오른쪽으로 수행됨)"를 고려하면 매개변수 확장에서 산술 확장이 작동하지 않는 이유는 무엇입니까?

그렇다면 어떻게?

예를 들어,

$ set hello world
$ echo $2
world
$ echo ${$((1+1))}
bash: ${$((1+1))}: bad substitution

나는 희망

  • 먼저 .and $((1+1))로 확장하세요 .${$((1+1))}2
  • 그런 ${2}다음 world.

감사해요.

답변1

eval이렇게 하려면 간접적으로 다음이 필요합니다.

eval echo \${$((1+1))}
index=$((1+1))
echo ${!index}

관련 정보