Saltar al contenido

¿Diferencia entre términos: “opción”, “argumento” y “parámetro”?

Solución:

A mando se divide en una matriz de cadenas con el nombre argumentos. El argumento 0 es (normalmente) el nombre del comando, el argumento 1, el primer elemento que sigue al comando, etc. Estos argumentos a veces se denominan parámetros posicionales.

$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

Un opción es un tipo documentado de argumento modificar el comportamiento de un mando, p.ej -l comúnmente significa “largo”, -v verboso. -lv están dos opciones combinadas en un soltero argumento. También hay opciones largas como --verbose (vea también Usar getopts para procesar opciones de línea de comando largas y cortas). Como sugiere su nombre, las opciones suelen ser opcionales. Sin embargo, hay algunos comandos con “opciones obligatorias” paradójicas.

$ ls -la /tmp /var/tmp
option1= -l
option2= -a

A parámetro es un argumento que proporciona información a los mando o uno de sus opciones, por ejemplo, en -o file, expediente es el parámetro de la -o opción. A diferencia de las opciones, cuyos posibles valores están codificados de forma rígida en los programas, los parámetros generalmente no lo están, por lo que el usuario es libre de usar cualquier cadena que se adapte a sus necesidades. Si necesita pasar un parámetro que parece una opción pero que no debe interpretarse como tal, puede separarlo del principio de la línea de comando con un guión doble: --.

$ ls -la /tmp /var/tmp
parameter1= /tmp
parameter2= /var/tmp

$ ls -l -- -a
option1    = -l
parameter1 = -a

A parámetro de shell es cualquier cosa que almacene un valor en el contexto del shell. Esto incluye parámetros posicionales (p. Ej. $1, $2…), variables (p. ej. $foo, $bar…) y de caracteres especiales (p. ej. [email protected])

Finalmente, hay subcomandos, también conocidos como funciones / comandos (de bajo nivel), que se utilizan con “metacomandos” que incorporan varios comandos separados, como busybox, git, apt-get, openssly similares. Con ellos, puede tener opciones globales que preceden al subcomando y opciones específicas del subcomando que siguen al subcomando. A diferencia de los parámetros, la lista de posibles subcomandos está codificada en el propio comando. p.ej:

$ busybox ls -l
command            = busybox
subcommand         = ls
subcommand option1 = -l

$ git --git-dir=a.git --work-tree=b -C c status -s
command            = git
command option1    = --git-dir=a.git
command option2    = --work-tree=b
command option3    = -C
subcommand         = status
subcommand option1 = -s

Tenga en cuenta que algunos comandos como test, tar, dd y find tienen una sintaxis de análisis de argumentos más compleja que las descritas anteriormente y pueden tener algunos o todos sus argumentos analizados como expressions, operands, keys y componentes específicos de comandos similares.

Tenga en cuenta también que las asignaciones de variables opcionales y las redirecciones, a pesar de ser procesadas por el shell para la expansión de tilde, expansión de parámetros, sustitución de comandos, expansión aritmética y eliminación de comillas como otros parámetros de la línea de comandos, no se tienen en cuenta en mi respuesta porque han desaparecido cuando el en realidad, se llama al comando y se le pasan sus argumentos.

los man página para un comando típico de Unix a menudo usa los términos argument, option y parameter. En el nivel más bajo, tenemos argument y todo es un argumento, incluida la (ruta del sistema de archivos al) comando en sí.

En un script de shell, accede a los argumentos utilizando las variables especiales $0 .. $n. Otros lenguajes tienen formas similares de acceder a ellos (comúnmente a través de una matriz con un nombre como argv).

Los argumentos pueden interpretarse como opciones si lo desea. La forma en que se hace esto depende de la implementación. Puede enrollar el suyo propio, por ejemplo, un caparazón (como bash) el script se puede utilizar proporcionado getopts o getopt comandos.

Éstos típicamente definen un opción como un argumento que comienza con un guion (-) y algunas opciones pueden utilizar argumentos de procedimiento como parámetros. Analizadores más capaces (p. Ej. getopt) admite la mezcla de formato corto (-h) y de formato largo (--help) opciones.

Normalmente, la mayoría de las opciones toman cero o un parámetro. Estos parámetros también se denominan a veces valores.

Las opciones admitidas están codificadas en el código del programa (por ejemplo, en la invocación de getopts dentro de un script de shell). Cualquier argumento restante después de que se hayan consumido las opciones se denomina comúnmente parámetros posicionales cuando el orden en el que se dan es significativo (esto contrasta con las opciones que normalmente se pueden dar en cualquier orden).

Nuevamente, el script define cuáles son los parámetros posicionales por cómo los consume y usa.

Entonces un comando típico

$ ls -I README -l foo 'bar car' baz

tiene siete argumentos: /usr/bin/ls, -I, README, -l, foo, bar car, y baz accesible como $0 a través de $6. los -l y -I se interpretan como opciones, este último tiene un parámetro (o valor) de README. Lo que queda son parámetros posicionales (foo, bar car y baz).

El análisis de opciones puede alterar la lista de argumentos eliminando los que consume (por ejemplo, usando shift o set) de modo que solo permanezcan los parámetros posicionales y, a partir de entonces, sean accesibles como $1 .. $n.

Dado que la pregunta tiene la etiqueta “bash”, busqué secciones relevantes en el manual de Bash. Los enumero como pasajes citados a continuación junto con mis propios resúmenes de una oración.

Argumentos

Todo lo que sigue al comando es un argumento.

Un comando de shell simple como echo a b c consta del comando en sí seguido de argumentos, separados por espacios.

Un comando simple es el tipo de comando que se encuentra con más frecuencia. Es solo una secuencia de palabras separadas por espacios en blanco, terminadas por uno de los operadores de control del shell (ver Definiciones). La primera palabra generalmente especifica un comando a ejecutar, y el resto de las palabras son los argumentos de ese comando.

Parámetros

Los argumentos se denominan parámetros durante la ejecución de la función.

Cuando se ejecuta una función, los argumentos de la función se convierten en parámetros posicionales durante su ejecución.

Un parámetro es una entidad que almacena valores. Puede ser un nombre, un número o uno de los caracteres especiales que se enumeran a continuación. Una variable es un parámetro indicado por un nombre.

Un parámetro posicional es un parámetro indicado por uno o más dígitos, distintos del 0 de un solo dígito. Los parámetros posicionales se asignan a partir de los argumentos del shell cuando se invoca, y pueden reasignarse mediante el comando integrado set. Se puede hacer referencia al parámetro posicional N como $ {N}, o como $ N cuando N consta de un solo dígito.

Opciones

No hay una sección dedicada a definir qué es una opción, pero a lo largo del manual se hace referencia a ellos como caracteres con prefijo de guión.

La opción -p cambia el formato de salida al especificado por POSIX

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *