Consejos de scripting de Bash que pueden ahorrar tiempo en Linux

Consejos de scripting de Bash que pueden ahorrar tiempo en Linux - Codelivly

 

Convertir las tareas rutinarias e incluso las que rara vez se requieren en guiones es casi siempre una gran victoria, porque no tiene que reinventar el enfoque para hacer el trabajo cada vez que se necesita, y ahorra mucho tiempo en problemas que maneja con frecuencia. .

Aquí hay algunos consejos para escribir scripts de bash y asegurarse de que sean fáciles de usar, fáciles de actualizar y difíciles de usar mal.

Índice
  1. comentarios
  2. Uso de funciones
  3. Comprobación de argumentos
  4. Salida en caso de error
  5. trabajar con comillas
  6. Utilice = o ==
  7. Permisos de archivo
  8. Pruebe sus guiones
  9. Concluir

comentarios

Una cosa importante que debe hacer al preparar un script en Linux es agregar comentarios, especialmente para los comandos que pueden ser un poco complejos. Si no ejecuta un script con mucha frecuencia, los comentarios pueden ayudarlo a comprender rápidamente todo lo que hace. Si alguien más necesita usar sus scripts, los comentarios pueden hacer que sea mucho más fácil para ellos saber qué esperar. Así que siempre añade comentarios. ¡Incluso usted podría disfrutarlos! No necesita comentar cada línea, solo cada grupo significativo de comandos. Aquí hay un ejemplo simple.

#!/bin/bash

# function to replace spaces in provided text with underscores
replspaces () {
  echo $@ | sed 's/ /_/g'
}

# function to remove spaces from the provided text
dropspaces () { echo $@ | sed 's/ //g'; }

# commands to call the functions defined above
replspaces "Hello World"
replspaces `date`
dropspaces "Hello World"
dropspaces `date`

La secuencia de comandos anterior define dos funciones: una para convertir los espacios en guiones bajos y otra para eliminar por completo los espacios en la cadena proporcionada en el indicador. Las reseñas dicen lo suficiente para explicar esto.

Uso de funciones

Como se muestra en el script anterior, las funciones pueden ser útiles. Esto es especialmente cierto cuando un solo script ejecutará las funciones varias veces. Los guiones serán más cortos y fáciles de entender.

Comprobación de argumentos

Acostúmbrese a pedir a sus scripts que verifiquen que la persona que los ejecuta proporcionó los argumentos correctos. Puede verificar la cantidad de argumentos, pero también puede verificar que las respuestas sean válidas. Por ejemplo, si está solicitando el nombre de un archivo, verifique que el archivo proporcionado realmente exista antes de ejecutar comandos que intenten usarlo. Si no existe, responde con un error y sal.

La siguiente secuencia de comandos comprueba que se hayan proporcionado dos argumentos como argumentos para la secuencia de comandos. En caso contrario, solicita la información necesaria.

#!/bin/bash

if [ $# -lt 2 ]; then
    echo "Usage: $0 lines filename"
    exit 1
else
    numlines=$1
    filename=$2
fi
…

El siguiente script solicita un nombre de archivo y luego verifica si el archivo existe.

#!/bin/bash

# get name of file to be read
echo -n "filename> "
read $filename

# check that file exists or exit
if [ ! -f $filename ]; then
    echo "No such file: $filename"
    exit
fi

Si es necesario, también puede verificar si el archivo se puede escribir o leer. La versión del script a continuación hace ambas cosas.

#!/bin/bash

# get name of file to be read
echo -n "filename> "
read filename

# check that file exists or exit
if [ ! -f $filename ]; then
    echo "No such file: $filename"
    exit
else # determine if file is readable
    if [ ! -r $filename ]; then
        echo "$filename is not writable"
        exit
    fi
# determine if file is writable
    if [ ! -w $filename ]; then
        echo "$filename is not readable"
        exit
    fi
fi

Nota la -r $nombre de archivo check pregunta si el archivo es legible. EL ! -r $nombre de archivo check pregunta si es no legible.

Salida en caso de error

Casi siempre tiene que salir cuando ocurre un error al ejecutar un script. Explique con un mensaje de error lo que salió mal. EL establecer -o errexit hará que una secuencia de comandos se cierre independientemente del tipo de error encontrado.

#!/bin/bash

set -o errexit  # exit on ANY error

tail NoSuchFile # tries to show bottom lines in NON-EXISTENT file
echo -n "Enter text to be appended> "
read txt
echo $txt >> NoSuchFile

El script anterior se cerrará si el archivo "NoSuchFile" no existe. También se mostrará un error.

Para salir cuando a una variable no se le ha dado un valor (es decir, no existe), use el apellido como se muestra en el siguiente script. A juntos -u El comando funciona de la misma manera.

#!/bin/bash

# exit script if an unset variable is used
set -o nounset

# welcome user with a greeting
echo $greeting

echo -n "Enter name of file to be evaluated: "
read filename

Si ejecuta el script tal como está, encontrará el siguiente problema y nunca se le pedirá que procese el archivo:

$ ck_nounset
./ck_nounset: line 7: greeting: unbound variable

trabajar con comillas

En muchos casos, no importa si usa comillas simples, comillas dobles o ninguna comilla. Ponga comillas alrededor de un nombre de variable en un si significa que no encontrará un error si la variable no está definida. El shell nunca terminará intentando evaluar el comando inválido si [ = 2 ]. El comando si [ “” = 2 ] es válido.

if [ "$var" = 2 ]

Es esencial poner comillas alrededor de los argumentos con más de una cadena. Tendrá problemas con el siguiente script si el usuario que responde la pregunta correcta/incorrecta escribe "muy bien" en lugar de solo "bien" o "malo".

#!/bin/bash

echo -n "Did you find the argument to be good or bad?> "
read ans

if [ $ans = good ]; then
  echo "Thank you for your feedback"
else
  echo -n "What didn't you like?> "
  read ans
  echo $ans >> bad_feedback
fi

En su lugar, puede usar una línea como esta para hacer la comparación. Esto le permitiría responder "bien" o "muy bien".

if [[ "$ans" = *"good" ]]; then

Utilice = o ==

La mayoría de las veces no importa cuál uses = O == para comparar cadenas. Sin embargo, algunos shells (por ejemplo, dash) no funcionan con ==así que ahórrate las pulsaciones de teclas y quédate con él = si no está seguro.

Permisos de archivo

Asegúrese de que sus scripts puedan ser ejecutados por cualquiera que pueda usarlos. A chmod -ug+rx nombre de archivo El comando le daría a usted (presumiblemente al propietario del archivo) y a cualquier miembro del grupo asociado con el archivo la capacidad de leer y ejecutar el script.

Pruebe sus guiones

No olvide pasar tiempo probando para asegurarse de que sus scripts hagan exactamente lo que pretende hacer. Las pruebas pueden incluir cosas como no responder a las indicaciones del guión para ver cómo reacciona. (2:15)

Concluir

Hay otros consejos sobre la creación de secuencias de comandos confiables y fáciles de mantener, incluido el aprendizaje de secuencias de comandos en Linux usando bash.

Si quieres conocer otros artículos parecidos a Consejos de scripting de Bash que pueden ahorrar tiempo en Linux puedes visitar la categoría Tutoriales.

Deja un comentario

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

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas