Manejo de parámetros posicionales y comandos básicos en Bash: shift, set y chmod
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.
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-paramecho "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-paramecho "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-param2echo "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-paramecho "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 fechaset `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 situacionwho | grep $1Explicació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-ejecutablechmod 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 HTMLPreguntas 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
Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.