Independentemente de qualquer sequência, não. o primeiro parâmetro precisa ser um nome de variável válido.
dynamic_assign(){ eval "$1"=\"\\" ; }
é tão bom quanto você vai conseguir
O shell Almquist no Slackware 14.2, mas não o shell Almquist do Debian, suporta a construção a seguir. Outras conchas semelhantes a Bourne não.
setvar "$varname" <...>
Bash evidentemente tem a capacidade de criar dinamicamente nomes de variáveis
declare "magic_variable_$1=$(ls | tail -1)"
Acho que há algumas restrições nos caracteres que podem aparecer em $1 , embora ... ( = vem à mente).
Isto é sugerido como uma solução alternativa para falsificar matrizes associativas em Bashes pré-4.0.
Eu posso criar uma função boba para designar uma variável criada dinamicamente no topo da minha cabeça usando eval .
OBSERVAÇÃO: NÃO USE ESTA FUNÇÃO POR QUALQUER MOTIVO, É TOTALMENTE INSEGURO.
assign_dynamically() {
eval "$1='$2'"
}
Isso sufoca se o valor $2 contiver ' e não suportar espaços em branco ou metacaracteres em $1 , mas não é uma solução.
Existe uma maneira portátil / POSIX-compatível para escrever uma função que atribui $2 em uma variável chamada $1 , independentemente do conteúdo de qualquer seqüência de caracteres?
Tags shell