obter argumentos passados e colocá-lo em uma matriz

2

existe uma maneira de fazer com que os argumentos passados se tornem o elemento de um array?

Eu quero acessar esses argumentos individualmente por meio de matriz.

assim:

./script.ksh arg1 arg2 arg3

então ficará assim:

element[0]=arg1
element[1]=arg2
element[2]=arg3
    
por kickass00 11.03.2014 / 10:12

2 respostas

3

Eles já estão em uma matriz, a matriz de parâmetros posicionais $@ com elementos individuais acessados com $1 , $2 ... (inicie em 1 , $0 é o nome do script).

Observe que há várias implementações (e versões) de ksh : AT & T ksh88 (como encontrado na maioria dos Unices comerciais), AT & T ksh93 (feito em código aberto em 2000, às vezes encontrado como dtksh em Unices comerciais e como um pacote opcional em opensource unix-likes), pdksh e seus derivados (MirBSD ksh , OpenBSD ksh ), que foi o único ksh disponível no opensource Unix-likes antes de 2000 e zsh (quando chamado como ksh ).

Para atribuir a outro array, com ksh88 (também funciona com todas as outras implementações de ksh exceto o antigo pdksh ):

set -A array -- "$@"

Com versões mais antigas do pdksh:

set -A array "$@"

Com ksh93, zsh e versões recentes de mksh :

array=("$@")
    
por 11.03.2014 / 10:57
1
$ cat t.ksh
#!/bin/ksh

element=( "$@" )

echo "${element[0]}"
echo "${element[1]}"
echo "${element[2]}"

.

$ ./t.ksh one two three
one
two
three

Embora eu não entenda por que você gostaria de fazer isso, os parâmetros posicionais estão prontamente disponíveis em $@ , o qual você pode facilmente iterar.

    
por 11.03.2014 / 10:18