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