Uso del comando 'Shift' en Bash

Uso del comando 'Shift' en Bash
Cuando los argumentos de la línea de comandos toman entradas del usuario, el primer argumento contiene el nombre del script. A veces se requiere el nombre del script para omitir para fines de programación. Esta tarea se puede hacer fácilmente usando cualquier bucle en Bash. Utilizando el 'cambio'El comando es otra forma de hacer la tarea. Este comando se usa para mover un parámetro posicional a la izquierda de forma predeterminada. Los diferentes usos del 'cambio'Comando en Bash se ha mostrado en este tutorial.

Sintaxis:

La sintaxis del comando 'Shift' se da a continuación. Este comando tiene un argumento opcional que se utiliza para establecer el número de posiciones que se cambiarán hacia la izquierda. El argumento debe ser positivo. Si el valor del argumento se establece en 0, entonces no se cambiará ningún argumento de línea de comandos. Si no se usa ningún argumento, entonces un argumento de línea de comandos se cambiará de forma predeterminada.

cambio [n]

Ejemplo-1: Imprima todos los valores de argumento de línea de comandos

Cree un archivo bash con el siguiente script para imprimir los valores del argumento de la línea de comando usando el comando 'para' bucle sin 'shift' y 'while' bucle con el comando 'shift'. Cada valor de argumento se almacenará en la variable, el valor cuando el para Loop se ejecutará, y esta variable se imprimirá más tarde. El comenzar La variable se ha utilizado en el mientras bucle para leer cada valor de argumento usando el 'cambio'Comando y termina el bucle cuando se imprimen todos los argumentos de línea de comandos. Una variable de mostrador, i, se ha utilizado en el script para mostrar el número del argumento. Si no se proporciona ningún argumento de línea de comandos en el momento de la ejecución, entonces se establecerá una cadena vacía para el primer argumento, y no se imprimirá nada.

#!/bin/bash
#Print los valores de AeGument de línea de comandos usando para y while bucle
#Establece el mostrador
i = 1
Echo "Los valores de argumento sin comando de cambio:"
#Iterate todos los valores usando para bucle
por valor en "$@"
hacer
echo "argumento no. $ i = $ valor "
((i ++))
hecho
#Reinicializa el mostrador
i = 1
#Establece el argumento opcional
inicio = $ 1:-""
Echo "Los valores del argumento usando el comando Shift:"
#Iterate todos los valores usando While Loop
Mientras ["$ comienza" != ""];
hacer
echo "argumento no. $ i = $ inicio "
#Shift cada argumento por 1
cambio
Inicio = $ 1
((i ++))
hecho

Producción:

Según la siguiente salida, el script anterior se ha ejecutado con tres valores de argumento de línea de comandos. Los valores de argumento se imprimen dos veces usando el bucle for y while bucle con el 'cambio' dominio.

Ejemplo-2: imprima los valores de argumento de la posición uniforme

En el ejemplo anterior, ningún argumento se ha utilizado con el 'cambio'Comando, y el valor del argumento se cambió por 1 a la izquierda. El uso del argumento opcional del 'cambio'El comando se muestra en este ejemplo. Cree un archivo bash con el siguiente script para imprimir los valores de argumento de la línea de comando de la posición uniforme. El número total de argumentos de línea de comandos ha contado y almacenado en la variable total, y se ha utilizado en el mientras bucle para iterar el bucle. El 'cambio'El comando se ha utilizado con el valor del argumento 2 para cambiar dos argumentos de línea de comandos en cada iteración del bucle. Cada argumento de línea de comandos de las posiciones pares se imprimirá con espacio después de ejecutar el script.

#!/bin/bash
#Cribe el número total de argumentos de línea de comandos
Total = $#
Echo "Los argumentos totales son: $ Total"
Echo "Los valores de argumento de la posición uniforme son:"
mientras que [$ total -GE0];
hacer
#Imprimir el valor del argumento con el espacio
echo -n $ 1 ""
#Shift dos argumentos
cambio 2
#Crement el mostrador por 2
((total = $ total-2))
hecho
#Add nueva línea
eco

Producción:

De acuerdo con el siguiente resultado, el script anterior ejecutó seis valores de argumento de línea de comandos sin el nombre del script. Después de imprimir el valor 89, el siguiente valor de la posición uniforme es 34, y el siguiente valor de la posición par es 12.

Ejemplo-3: lea los valores particulares de argumentos específicos

La forma de leer valores de argumento de línea de comandos específicos usando 'cambio'El comando sin usar ningún bucle ha mostrado en este ejemplo. Crear un archivo bash con el siguiente script. El número total de argumentos de línea de comandos se ha contado en el script, y si el valor total es inferior a 6, el script finalizará mostrando un mensaje de error. Si los seis argumentos de línea de comandos se dan correctamente, el segundo argumento contendrá el nombre de host, el cuarto argumento contendrá el nombre de usuario y el sexto argumento contendrá la contraseña. El nombre de host se almacenará en una variable cambiando un argumento que queda. El nombre de usuario se almacenará en una variable cambiando dos argumentos restantes. La contraseña se almacenará en una variable cambiando dos argumentos que quedan nuevamente. A continuación, los valores de nombre de host, nombre de usuario y contraseña se compararán con tres valores de cadena para autenticar al usuario.

#!/bin/bash
#Cribe el número total de argumentos de línea de comandos
Total = $#
#Chek Los 6 valores de argumento se dan o no
if [$ total -lt6]; entonces
Echo "Número no válido de argumentos."
demás
#Shift un argumento
cambio 1
#Leer el valor del nombre de host
nombre de host = $ 1
#Shift dos argumentos
cambio 2
#Leer el valor del nombre de usuario
nombre de usuario = $ 1
#Shift dos argumentos
cambio 2
#Leer el valor de la contraseña
contraseña = $ 1
FI
#Ceck los valores para la autenticación
if [[$ hostname == "localhost" && $ username == "fahmida" && $ contraseña == "1234"]]; entonces
Echo "Autenticación exitosa."
demás
Echo "autenticación sin éxito."
FI

Producción:

Según la salida, el script anterior se ejecutó dos veces con seis valores de argumentos. En la primera ejecución, se aprobaron los datos válidos y se ha imprimido un mensaje de éxito. En la segunda ejecución, se aprobaron datos no válidos y se ha imprimido un mensaje de falla.

Conclusión:

El comando 'Shift' es un comando muy útil para leer valores de argumento de línea de comandos particulares. Se han descrito diferentes usos de este comando en este tutorial mediante el uso de múltiples ejemplos para ayudar a los lectores a comprender el propósito de usar este comando en el script bash.