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