Como desarmar os parâmetros posicionais?

11

Como eu faço isso:

set foo bar baz
unset # Something else here
echo $# # Should ouput 0

Ao fazer set "", $#ainda será 1 e não 0.

Tyilo
fonte

Respostas:

14

Ok, isso foi apenas estúpido, e eu descobri que usando set --funcionará.

Tyilo
fonte
@ Gilles: De acordo com a página de manual do bash, set -sem argumentos, os parâmetros posicionais permanecem inalterados.
Camh
@camh Devo discordar. Vejo isso no manual: set - Se nenhum argumento seguir esta opção, os parâmetros posicionais não serão definidos. Caso contrário, os parâmetros posicionais são definidos como args, mesmo que alguns deles comecem com a -.
Kdubs
@kdubs para os quais você está citando a página de manual set --. Eu usei set -(hífen único), que diz: "Se não houver argumentos, os parâmetros posicionais permanecem inalterados".
camh
você está certo. Eu os confundi. minha tela fez o seu - olhar como -
kdubs
4

Desmarque facilmente todos os parâmetros posicionais com:

shift $#

Para remover os três primeiros parâmetros posicionais:

shift 3

Shift "sai" dos primeiros N parâmetros posicionais. Usando $ #, obtemos o número total de parâmetros posicionais. O comando, portanto, exibe todos os parâmetros posicionais.

Noé
fonte