<Anterior | Conteúdo | Próxima>
shift - Obtendo acesso a muitos argumentos
Mas o que acontece quando damos ao programa um grande número de argumentos como este:
[me @ linuxbox ~] $ parâmetro positivo *
Número de argumentos: 82
$ 0 = / home / me / bin / posit-param
$ 1 = endereços.ldif
$ 2 = bin
$ 3 = bookmarks.html
$ 4 = debian-500-i386-netinst.iso
$ 5 = debian-500-i386-netinst.jigdo
$ 6 = debian-500-i386-netinst.template
$ 7 = debian-cd_info.tar.gz
$ 8 = Desktop
$ 9 = dirlist-bin.txt
$ 8 = Desktop
$ 9 = dirlist-bin.txt
Neste sistema de exemplo, o curinga * se expande em 82 argumentos. Como podemos processar tantos? O shell fornece um método, embora desajeitado, para fazer isso. o mudança comando faz com que todos os parâmetros “movam um para baixo” cada vez que é executado. Na verdade, usando mudança, é possível sobreviver com apenas um parâmetro (além de $0, que nunca muda):
#! / Bin / bash
# posit-param2: script para exibir todos os argumentos count = 1
enquanto [[$ # -gt 0]]; Faz
echo "Argumento $ count = $ 1" count = $ ((count + 1))
turno feito
#! / Bin / bash
# posit-param2: script para exibir todos os argumentos count = 1
enquanto [[$ # -gt 0]]; Faz
echo "Argumento $ count = $ 1" count = $ ((count + 1))
turno feito
Toda vez mudança é executado, o valor de $2 é movido para $1, o valor de $3 é movido para $2 e assim por diante. O valor de $# também é reduzido em um.
De acordo com o relatório posit-param2 programa, criamos um loop que avalia o número de argumentos restantes e continua enquanto houver pelo menos um. Nós exibimos o argumento atual, incrementamos a variável contar com cada iteração do loop para fornecer uma contagem contínua do número de argumentos processados e, finalmente, executar um mudança carregar
$ 1 com o próximo argumento. Aqui está o programa em funcionamento:
[me @ linuxbox ~] $ posit-param2 abcd
Argumento 1 = a Argumento 2 = b Argumento 3 = c Argumento 4 = d
[me @ linuxbox ~] $ posit-param2 abcd
Argumento 1 = a Argumento 2 = b Argumento 3 = c Argumento 4 = d