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