A resposta mais simples é definir NAME=0 SURNAME=1
e usar essas variáveis em vez de 0 e 1 índices em sua matriz, no entanto ...
Você pode fazer o que quiser de maneira bastante lenta usando funções de disciplina . Cada variável pode ter uma função set()
definida para ela; ele será chamado toda vez que a variável for alterada. Da mesma forma para get()
. Então você pode fazer o seguinte:
#!/bin/ksh
typeset -C person
function person.name.set {
person_arr[0]=${.sh.value}
}
function person.name.get {
.sh.value=${person_arr[0]}
}
function person.surname.set {
person_arr[1]=${.sh.value}
}
function person.surname.get {
.sh.value=${person_arr[1]}
}
typeset -a person_arr
person_arr[0]=first person_arr[1]=second
echo "name is ${person.name} ${person.surname}"
person.name=first2 person.surname=second2
echo "name is ${person.name} ${person.surname}"
echo "name is ${person_arr[@]}"
Isso declara uma variável composta person
e funções de disciplina para os subnomes .name
e .surname
. As funções set()
definem o valor indexado person_arr
apropriado para o novo valor (em .sh.value
) e as funções get()
"retornam" o valor indexado apropriado configurando .sh.value
.
O exemplo define a versão da matriz como um valor e, em seguida, substitui-os pelos nomes compostos. A saída é
name is first second
name is first2 second2
name is first2 second2
Se você tem várias variáveis que deseja vincular dessa maneira, deve procurar uma solução usando seu próprio tipo de ksh .