동적으로 명명된 쉘 변수에 값을 이식 가능하게 할당

동적으로 명명된 쉘 변수에 값을 이식 가능하게 할당

다음 구조는 Slackware 14.2의 Almquist 셸에서 지원되지만 Debian의 Almquist 셸에서는 지원되지 않습니다. Bourne과 같은 다른 쉘의 경우에는 그렇지 않습니다.

setvar "$varname" <...>

Bash는 분명히 능력이 있습니다변수 이름을 동적으로 생성

declare "magic_variable_$1=$(ls | tail -1)"

$1그래도 (생각) =에 등장할 수 있는 캐릭터에는 한계가 있는 것 같아요.

이는 Bash 4.0 이전의 가짜 연관 배열에 대한 해결 방법으로 권장됩니다.

.eval

참고: 이 기능은 어떤 이유로든 사용하지 마십시오. 완전히 안전하지 않습니다.

assign_dynamically() {
    eval "$1='$2'"
}

그러나 값에 공백이나 메타 문자가 $2포함되어 '있고 이를 지원하지 않으면 이 기능이 차단되므로 $1해결책이 아닙니다.

두 문자열의 내용에 관계없이 $2이름이 지정된 변수에 할당할 수 있는 함수를 작성하는 이식 가능/POSIX 호환 방법이 있습니까 ?$1

답변1

어떤 문자열도 아닙니다. 첫 번째 매개변수는 유효한 변수 이름이어야 합니다.

dynamic_assign(){ eval "$1"=\"\$2\" ; }

당신이 얻을 수있는만큼 좋은

관련 정보