제한된 bash 스크립팅 기술로 어떻게 해결할 수 있는지, 나는 어떻게 든 bash 스크립트에서 변수를 결합하고 싶다. 나는 다음과 같은 노력하고있어 :bash의 중첩 변수와 루프
#!/bin/bash
basearch=x86_64
ol7_channels="ol UEKR4 UEKR3"
ol6_channels="ol UEKR4 UEKR3 UEK"
ol5_channels="ol UEK"
for version in 7 6 5
do
for channel in ${ol${version}_channels}}
do
printf "Oracle Linux $version $channel $basearch"
done
done
바람직한 출력은 다음과 같습니다 난이 작동하지 않습니다했던 것처럼
OracleLinux 7 ol x86_64
OracleLinux 7 UEKR4 x86_64
OracleLinux 7 UEKR3 x86_64
OracleLinux 6 ol x86_64
OracleLinux 6 UEKR4 x86_64
OracleLinux 6 UEKR3 x86_64
OracleLinux 5 ol x86_64
OracleLinux 5 UEKR4 x86_64
OracleLinux 5 UEKR3 x86_64
내가 변수 내부 변수를 넣어 이해합니다. 누구나이 방법을 보여줄 수 있습니까?
귀하의 질문에 어디 하나의 배열이 없습니다. –
그건 그렇고 - 어떤 버전의 bash? bash 4.3 이상에서이 작업을 수행하는 올바른 방법은 namevars를 사용하여 실제 배열을 가리키는 것입니다. –
... btw, http://shellcheck.net/을 통해 코드를 실행하는 습관을 만드는 것을 고려하십시오. - 상수가 아닌 형식 문자열과 함께'printf'를 사용하면 나쁜 형식이라는 것을 지적 할 것입니다. (이것은 bash, C 및 C 언어와 같은 언어에서는 그렇지 않지만 "악성 폼"이 아니라 "악용 가능한 보안 버그의 원인"이라고도 함). –