Manejo de parámetros posicionales y comandos básicos en Bash: shift, set y chmod

InformáticaActualizado el 6,43 KB

Resumen

El documento presenta siete scripts Bash prácticos que muestran cómo trabajar con parámetros posicionales, desplazarlos con shift, redefinirlos con set, obtener fecha y hora, buscar usuarios conectados con who y grep, y conceder permisos de ejecución con chmod. Cada ejemplo incluye el código y una explicación de su funcionamiento en un entorno Linux.

Puntos clave

  • Los parámetros posicionales $1, $2, $3... contienen los argumentos que se pasan a un script al ejecutarlo.
  • El comando shift n elimina los n primeros parámetros y desplaza el resto a las posiciones inferiores.
  • El comando set redefine los parámetros posicionales del script con los valores indicados (por ejemplo, set $A $B $C).
  • Combinando set con date (set `date`) se asignan día, mes, número, año y hora a $1 a $5.
  • La tubería who | grep $1 permite buscar si un usuario concreto está conectado al sistema.
  • chmod u+x fichero concede permiso de ejecución al propietario del archivo.

Ponte a prueba

Gestión de Parámetros y Comandos Esenciales en Shell Scripting

Este documento presenta una serie de ejemplos prácticos de scripts Bash, diseñados para ilustrar el manejo de parámetros posicionales, la interacción con el usuario y la ejecución de comandos fundamentales en un entorno Linux. Cada sección detalla un script específico, mostrando su código y explicando su funcionalidad.

Ejemplo 1: Visualización de Parámetros (ver-param)

Este script simple muestra cómo acceder y visualizar los parámetros posicionales pasados a un script Bash.

$ cat ver-param
echo "El valor de \$1 es ..................$1"
echo "El valor de \$2 es ..................$2"
echo "El valor de \$3 es ..................$3"
echo "El valor de \$4 es ..................$4"

Explicación: El script imprime el valor de los primeros cuatro argumentos ($1, $2, $3, $4) que se le pasen al ejecutarlo.

Ejemplo 2: Desplazamiento de Parámetros (rotar-param)

Este ejemplo demuestra el uso del comando shift para desplazar los parámetros posicionales, eliminando los primeros y reasignando los restantes.

$ cat rotar-param
echo "El valor de \$1 es ..................$1"
echo "El valor de \$2 es ..................$2"
echo "El valor de \$3 es ..................$3"
echo "El valor de \$4 es ..................$4"
shift 2
echo -e "\nSe desplazan 2 posiciones el valor de los parámetros"
echo "El valor de \$1 es ..................$1"
echo "El valor de \$2 es ..................$2"
echo "El valor de \$3 es ..................$3"
echo "El valor de \$4 es ..................$4"
echo -e "\nFin de ejecución de rotar-param"

Explicación: Inicialmente, se muestran los primeros cuatro parámetros. Luego, el comando shift 2 elimina los dos primeros parámetros ($1 y $2), y los parámetros originales $3 y $4 se convierten en los nuevos $1 y $2, respectivamente.

Ejemplo 3: Desplazamiento Interactivo de Parámetros (rotar-param2)

Este script permite al usuario especificar cuántas posiciones desea desplazar los parámetros de forma interactiva.

$ cat rotar-param2
echo "El valor de \$1 es ..................$1"
echo "El valor de \$2 es ..................$2"
echo "El valor de \$3 es ..................$3"
echo "El valor de \$4 es ..................$4"
echo -n "Introduzca el valor del desplazamiento: "
read despla
shift $despla
echo -e "\nSe desplazan $despla posiciones el valor de los parámetros"
echo "El valor de \$1 es ..................$1"
echo "El valor de \$2 es ..................$2"
echo "El valor de \$3 es ..................$3"
echo "El valor de \$4 es ..................$4"
echo "Fin de ejecución de rotar-param2"

Explicación: El script solicita al usuario un número de desplazamiento mediante read despla. Luego, utiliza shift $despla para mover los parámetros la cantidad de posiciones indicada.

Ejemplo 4: Establecimiento de Parámetros con 'set' (set-param)

Este script demuestra cómo redefinir los parámetros posicionales de un script utilizando el comando set.

$ cat set-param
echo "El valor de \$1 es ..................$1"
echo "El valor de \$2 es ..................$2"
echo "El valor de \$3 es ..................$3"
echo "Introduzca 3 cadenas de caracteres:"
read A
read B
read C
set $A $B $C
echo "Los valores de los parámetros posicionales son los siguientes:"
echo "El valor de \$1 es ................ $1"
echo "El valor de \$2 es ................ $2"
echo "El valor de \$3 es ................ $3"

Explicación: Después de mostrar los parámetros iniciales, el script solicita tres cadenas de caracteres al usuario. El comando set $A $B $C redefine los parámetros posicionales ($1, $2, $3) con los valores introducidos.

Ejemplo 5: Obtención de Fecha y Hora con 'set' (fecha)

Este ejemplo utiliza el comando set junto con date para asignar componentes de la fecha y hora a variables posicionales.

$ cat fecha
set `date`
echo "El nombre del día es: $1"
echo "El mes es: $2"
echo "El número del día es: $3"
echo "El año es: $4"
echo "La hora es: $5"
echo "Fin de la ejecución del shellscript fecha"

Explicación: El comando set `date` toma la salida del comando date y la asigna a los parámetros posicionales. Así, $1 contendrá el día de la semana, $2 el mes, y así sucesivamente.

Ejemplo 6: Búsqueda de Usuarios Conectados (situacion)

Este script combina los comandos who y grep para buscar un usuario específico entre los conectados al sistema.

$ cat situacion
who | grep $1

Explicación: El script utiliza una tubería (pipe) para pasar la salida del comando who (que lista los usuarios conectados) al comando grep, que filtra las líneas que contienen el parámetro $1 (el nombre de usuario a buscar).

Ejemplo 7: Concesión de Permisos de Ejecución (hacer-ejecutable)

Este script utiliza el comando chmod para otorgar permisos de ejecución a un archivo específico para el propietario.

$ cat hacer-ejecutable
chmod u+x $1
echo "Fichero \$1 con permiso de ejecución para el propietario"

Explicación: El comando chmod u+x $1 añade el permiso de ejecución (x) para el usuario propietario (u) al archivo especificado como parámetro $1.

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué hace el comando shift en un script Bash?

El comando shift desplaza los parámetros posicionales hacia la izquierda, eliminando los primeros. Por ejemplo, shift 2 hace que los antiguos $3 y $4 pasen a ser $1 y $2.

¿Cómo se redefinen los parámetros posicionales de un script?

Se usa el comando set seguido de los nuevos valores, como set $A $B $C, que asigna esos valores a $1, $2 y $3.

¿Para qué sirve chmod u+x en un script?

Sirve para añadir el permiso de ejecución (x) al propietario (u) del fichero indicado como parámetro $1.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué hace el comando shift 2 en un script Bash?
2. ¿Qué componente de la fecha se asigna a $1 cuando se usa set `date`?
3. ¿Qué comando se utiliza en el script situacion para listar los usuarios conectados?
4. ¿Qué permiso concede chmod u+x al fichero indicado?
5. ¿Cómo obtiene el script rotar-param2 el número de desplazamiento?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.