Saltar al contenido

Asignar variable usando varias líneas

Luego de de nuestra larga selección de datos solucionamos esta incógnita que suelen tener muchos los lectores. Te ofrecemos la solución y esperamos serte de mucha apoyo.

Solución:

¿Por qué optar por construcciones complejas y difíciles de leer? Hay una forma perfectamente natural de presentar esto que no necesita asignaciones intermedias, formas sofisticadas de construir un vacío stringcitando sutilezas u otra carga cognitiva.

if foo; then
    x=$(
      a_very_long_command_name --option1='argument 1 is long' 
                               --option2='argument 2 is long as well'
    )
fi

Puede almacenar el valor en $_que se establece en el último argumento:

if foo; then
    : "$(f)"
    x=$_
fi

O puede usar una subcapa para comer la sangría:

if foo; then
    x=$(
    )$(f)
fi

Si se le permite usar here-docs, el siguiente estilo funciona bien. Citando el here-doc string con un líder - permite que su código esté diseñado con tabulaciones solamente.

Algo como

if true; then
        read -d '' -r x <<-EOF
        $(f)
        EOF
fi

Pero recuerde que copiar y pegar el código de arriba no funciona, ya que Stack Exchange reemplaza las pestañas con espacios. Tienes que escribir cuidadosamente en el Pestaña carácter para las líneas que comienzan con here-doc y las líneas que terminan here-doc. Mi vim la configuración ha asignado el carácter de tabulación a 8 espacios. Si desea hacerlo aún más ordenado, modifique la regla de espaciado en vim estableciendo el espacio para la tabulación en 4 espacios como :set tabstop=4

Puedes ver cómo el Pestaña está formateado en mi script, mirándolo usando sed

$ sed -n l script.sh
#!/usr/bin/env bash$
$
$
f()$
    echo 777$
$
$
if true; then$
tread -d '' -r x <<-PERSON$
t$(f)$
tPERSON$
fi$
$
echo $x$

Observe la t caracteres en el here-doc string arriba. Si su secuencia de comandos se ve diferente a la anterior, verá el lloriqueo inesperado EOF errores

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

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