Você não pode desmarcá-lo, mas pode alterar $2
para $1
:
$ set bon jour
$ echo "$1$2"
bonjour
$ shift
$ echo "$1$2" # $2 is now empty
jour
shift
mudará todos os parâmetros posicionais um passo abaixo. É comum, por exemplo, loops de análise de linha de comando (que não usam getopt
/ getopts
) para alterar os parâmetros posicionais em cada iteração enquanto examina repetidamente o valor de $1
.
É incomum querer remover um parâmetro posicional.
A propósito, unset
usa uma variável nome , não seu valor, então unset $1
irá, na verdade, desfazer a variável bon
(se ela já tivesse sido definida).