¿Cómo desarmar los parámetros posicionales?


11

Cómo hago esto:

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

Al hacerlo set "", $#seguirá siendo 1 y no 0.

Respuestas:


14

Ok, esto fue simplemente estúpido, y descubrí que usarlo set --funcionará.


@Gilles: Según la página de manual de bash, set -sin argumentos deja los parámetros posicionales sin cambios.
camh

@camh Debo estar en desacuerdo. Veo esto en el manual: set: si no hay argumentos que sigan esta opción, los parámetros posicionales no están establecidos. De lo contrario, los parámetros posicionales se establecen en los argumentos, incluso si algunos de ellos comienzan con un -.
kdubs

@kdubs estás citando la página del manual set --. He usado set -(guión simple), que dice: "Si no hay argumentos, los parámetros posicionales permanecen sin cambios".
camh

tienes razón. Los confundí. mi pantalla hizo que tu - parezca -
kdubs

4

Desarma fácilmente todos los parámetros posicionales con:

shift $#

Para eliminar los primeros 3 parámetros posicionales:

shift 3

Shift "aparece" fuera de los primeros N parámetros posicionales. Al usar $ # obtenemos el número total de parámetros posicionales. Por lo tanto, el comando saca todos los parámetros posicionales.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.