다음 구조는 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\" ; }
당신이 얻을 수있는만큼 좋은