¿Qué es un parámetro posicional?

Un parámetro posicional es un argumento especificado en la línea de comando, que se utiliza para iniciar el proceso actual en un shell. Los valores de los parámetros posicionales se almacenan en un conjunto especial de variables que mantiene el shell.

Variables que almacenan parámetros posicionales.

Un ejemplo típico de un shell que usa parámetros posicionales es bash. Puede usar bash en Linux, BSD, macOS X y Windows 10.

Considere el siguiente comando de bash. El nombre del comando es mycommand . La línea de comando tiene tres parámetros: uno, dos y tres cuatro .

 mycommand uno dos "tres cuatro" 

Consejo: Los parámetros posicionales están delimitados por un espacio. El shell interpreta las cosas después de los espacios como parámetros individuales. Si el parámetro en sí contiene un espacio, escríbalo entre comillas, como en "tres cuatro", arriba.

Mientras se ejecuta mycommand, bash le proporciona las siguientes variables de shell:

Nombre de la variableValor
$ 0mi comando
$ 1uno
$ 2dos
$ 3tres cuatro
PS3
[correo electrónico protegido]uno dos tres CUATRO
PSuno dos tres CUATRO

La variable $ 0 se establece en la primera palabra del comando: el nombre del comando. Esta variable es útil porque los comandos pueden ser renombrados o ejecutados usando un enlace simbólico. Algunos programas se comportan de manera diferente según el nombre del comando utilizado para ejecutar el programa. $ 0 permite que un programa vea qué nombre de comando lo lanzó.

Las variables $ 1, $ 2 y $ 3 contienen los valores del primer, segundo y tercer parámetro, respectivamente. Si hubiera un cuarto parámetro, su valor se colocaría en la variable $ 4 . Se puede acceder a los parámetros superiores a 9 utilizando llaves alrededor del número; por ejemplo, $ {10} sería el décimo parámetro, y $ {123} sería el 123er.

La variable $ # contiene el número de parámetros posicionales, excluyendo $ 0.

La variable [correo electrónico protegido] contiene el valor de todos los parámetros posicionales, excluyendo $ 0.

La variable $ * es la misma que [protegida por correo electrónico], excepto cuando está entre comillas dobles. Cuando se incluye entre comillas dobles, $ * se expande a $ 1c $ 2c $ 3c ... donde c es el primer carácter de $ IFS, la variable separadora del campo interno de bash. El IFS se usa para la división de palabras, y su valor predeterminado es "espacio, tabulador o nueva línea": aquí es donde bash ve el final de una palabra y el comienzo de la siguiente.

Si el valor de $ IFS es " _ " (un guión bajo), "[correo electrónico protegido]" se expande a:

 uno dos tres CUATRO 

Mientras que "$ *" se expande a:

 uno dos tres CUATRO 

Ejemplos

Aquí hay algunos ejemplos del uso de parámetros posicionales en bash.

Usando el comando integrado incorporado, el valor de [protegido por correo electrónico] se puede modificar para el shell actual. Todo después del set - se registrará como un parámetro posicional.

 conjunto - uno dos "tres cuatro" 

Ahora podemos iterar sobre estas variables usando para ... en :

 para arg en [correo electrónico protegido]; hacer eco "$ arg"; hecho 
 uno dos tres CUATRO 

En bash, [correo electrónico protegido] es la lista predeterminada para iterar cuando ejecuta, por lo que este comando también funciona:

 para arg hacer eco "$ arg"; hecho 
 uno dos tres CUATRO 

Iterar sobre "$ *" (con comillas dobles) proporcionará una serie concatenada de parámetros posicionales, junto con el primer carácter de $ IFS :

 IFS = ", "; para arg en "$ *"; hacer eco "$ arg"; hecho 
 uno dos tres CUATRO 

Para obtener más información, consulte la documentación del shell de comandos de bash.

Parámetro, términos de programación