RogerDez
(usa Outra)
Enviado em 30/03/2020 - 10:44h
Dr juliobash,
não sou especialista em nada, mas eu pago muito pau pro ksh93..
Afinal, Korn Rocks!
http://kornshell.com/fun/
o zsh tem uma opção de simulação do ksh93:
eu@host% ARGV0=ksh exec zsh
$
$ Frutas=(Pera Uva)
$ print ${Frutas[0]}
Pera
$ print ${Frutas[1]}
Uva
$ Frutas+=(Maçã)
$ print ${Frutas[2]}
Maçã
$ Frutas+=Laranja
$ print ${Frutas[3]}
$ print ${Frutas[*]}
PeraLaranja Uva Maçã
$
Eu acho que a versão do ksh93 já tem essas funcionalidades que o senhor questionou.
Nem o Bash aceita Frutas+=Maçã para adicionar esse como último elemento de um array como o senhor perguntou!
Pode conferir
no Bash:
[~]$ Frutas=(Pera Uva)
[~]$ Frutas+=Maça
[~]$ echo ${Frutas[*]}
PeraMaça Uva
Aqui a lista de sugestões do Korn para o Bash:
I [Korn] have not looked at bash for several years and some of the features I describe here might now be implemented by bash. I sent Chet Ramey, author of bash, the list of new features in ksh93 years ago so that if these features get implemented in bash, they would be compatible. Here is a partial list of ksh93 features:
Associative arrays - ksh88 already supports indexed arrays.
Floating point arithmetic + math library functions.
Arithmetic for command similar to C and awk.
Complete ANSI C printf formatting with extensions.
Run time linking of libraries and builtins.
A number of additional substring operations such as offset length.
Full extended regular expression matching capabilities
Compound variables which can be used to represent data aggregates.
Name references for passing aggregate variables by name.
Active variables. Users can trap variable assignment and references by associating intercept functions of the form name.get and name.set.
Ability to make socket connections to servers by name.
read with timeouts.
Conformance to POSIX 1003.2.
Command completion and variable completion, ksh93 only had file name completion.
A key binding mechanism that allows users to bind keys to new editing functions.
https://slashdot.org/story/01/02/06/2030205/david-korn-tells-all
Algumas dessas sugestões de compatibilidade já foram implementadas pelo Bash..
A respeito dos números de índices do Bash..
O Bash é uma das únicas shells que começam o índice com '0', por que copiou do Ksh.
As outras, exemplo Bourne, csh, tcsh, fish, rc, es, yash, começam do 1.
As outras ferramentas da shell também começam a contar do 1. Já pensou fazer um 'head -n 0' para puxar a primeira linha de um arquivo??
Além disso, se o índice começasse do 1 e houvesse somente um elemento no array, tanto [1] quanto [-1] seriam equivalentes..
Se vc tem quatro elementos no array, os índices deveriam ir intuitivamente de 1-4 e não de 0-3..
Além disso, no Bash, o '[0]' serve para puxar a fonte da função ou do script, por exemplo.. E depois começa a contar array com '0' também??
Causa muita confusão começar do '0' em um array, mas é claro depois que se acostuma, é fácil contar do '0', assim como os Romanos antigos.
http://exple.tive.org/blarg/2013/10/22/citation-needed/
https://unix.stackexchange.com/questions/252368/is-there-a-reason-why-the-first-element-of-a-zsh-arr...
Ainda bem que este problema foi resolvido no Z-shell!
Mas esses comentários são para provocar os Bash fan-boys e haver uma discussão, e aprendermos mais..
O meu avatar é o Mago, ou o Monstro, do Z-shell