Bash Set en Fish

Nilesh Katuwal 30 enero 2023
  1. Bash set -x
  2. Bash set -e
  3. Bash set -u
  4. Comando para Fish Shell
Bash Set en Fish

En este artículo, aprenderemos a golpear set -e, set -u y set -x en el caparazón de pescado.

Bash set -x

El comando set -x se usa para depurar scripts de Bash imprimiendo cada declaración ejecutada en el shell para fines de depuración y solución de problemas. El comando set -x se puede ejecutar directamente en un shell Bash interactivo o dentro de un script Bash.

El comando set -x generalmente coloca la inicialización del shell Bash después de sh-bang.

Habilitamos la depuración en este ejemplo usando el comando set -x. De forma predeterminada, la depuración está deshabilitada en Bash.

En cambio, cada declaración se imprime en el terminal Bash, seguida de los resultados de la declaración, para facilitar la verificación. Por ejemplo, el echo " The First Tree" se escribe primero, seguido de su resultado.

Además, las declaraciones depuradas comienzan con un signo más.

#!/bin/bash

set -x

echo " The First Tree"

echo "The Second Tree"

Producción :

+ echo ' The First Tree'
 The First Tree
+ echo 'The Second Tree'
The Second Tree

Bash set -e

El comando set -e se puede utilizar para detener la ejecución de un script o función y devolver un código de error distinto de cero si confiamos en la ejecución del script o de la función y queremos información precisa sobre el resultado.

De forma predeterminada, las funciones y los scripts de Bash devuelven 0 si su ejecución se completa correctamente y sin errores. Sin embargo, si ocurre un problema, un código de error ofrece detalles específicos sobre el error.

En el siguiente ejemplo, configuramos la salida si ocurre un error al comienzo del script. Como no hay permiso de root, mkdir /root/test devuelve un error y no se puede crear el directorio.

En consecuencia, la línea echo "Progress..." ahora se puede ejecutar y mostrar en la terminal.

#!/bin/bash

set -e

mkdir /root/test


echo "Progress..."

Bash set -u

El comando set-u le indica al shell Bash que interprete las variables no configuradas como errores y salga inmediatamente. Esto nos acerca considerablemente al comportamiento de los lenguajes avanzados.

El comando set -u puede prevenir y mostrar errores para variables Bash no utilizadas.

Ejemplo:

#!/bin/bash
firstName="Jackie"
fullName="$firstname John"
echo "$fullName"

Por favor, consulte el ejemplo anterior. ¿Ves el error?

En el lado derecho de la tercera línea, la palabra "firstname" aparece en minúsculas en lugar de mayúsculas y minúsculas. Sin la opción -u, este error no se mostraría.

Sin embargo, con la opción -u, el script termina en esa línea con un código de salida de 1, y el mensaje "firstname: unbound variable" se imprime en stderr.

En general, queremos que falle de manera explícita y rápida en lugar de crear errores sutiles que pueden no encontrarse hasta mucho más tarde.

Comando para Fish Shell

set fish_trace 1 # display the expanded command line before execution
set fish_trace 2 # prepend file and line number to the command line

set fish_trace 1 1 # print the command line before execution and the exit status following execution.

set fish_trace 1 2 # as above, except print the exit status of all subprocesses (?)

set fish_trace 0 1 # print command-line exit status

Estas opciones, como set -u, set -e y set -x, no existen en Fish. No hay una sintaxis dedicada para establecer variables en Fish.

En su lugar, utiliza un comando estándar: set, que acepta un nombre de variable y su valor. Si se proporcionan una variable y valores, set asigna los valores a la variable con el nombre especificado.

Se permiten valores múltiples ya que todas las variables en Fish son listas.