¿Cómo depurar una función bash que devuelve un valor y cómo agregar nuevas líneas a una variable?
Hoy estoy en un curso intensivo de bash.
Esta es una función bash quedevuelve un valor, a través de echo:
#!/bin/bash
get_hello_name() {
echo 'Hello $1!'
}
msg=$(get_hello_name "x")
echo $msg
Salida:
$ bash ./initial_script5.sh
Hello $1!
Entonces pensé incorrectamente que elúltimo echo fue devuelto (vengo de Java y Python), y estaba tratando de usar echo para depurar el resto de la función.
Y luego me preguntaba por qué diablos no podía imprimir nuevas líneas en mis declaraciones de eco, a pesar de intentarlocada sugerencia enesta pregunta.
Este script demuestra el problema:
#!/bin/bash
a_function() {
echo "---In function"
printf %"s\n" hello world
printf "Hello\nworld"
echo El problema es esetodas de los ecos en la función están concatenados juntos,después de ser recortado individualmente, y luego regresó como un todo.
Así que esto me lleva a dos preguntas: ¿cómo depurar una función que devuelve un valor y cómo se agregan nuevas líneas a una variable (no es que quiera hacer esto último necesariamente, pero me gustaría entenderlo)?
hello\nworld'
echo -e 'hello\nworld'
}
echo "---Pre function"
printf %"s\n" hello world
printf "Hello\nworld"
echo El problema es esetodas de los ecos en la función están concatenados juntos,después de ser recortado individualmente, y luego regresó como un todo.
Así que esto me lleva a dos preguntas: ¿cómo depurar una función que devuelve un valor y cómo se agregan nuevas líneas a una variable (no es que quiera hacer esto último necesariamente, pero me gustaría entenderlo)?
hello\nworld'
echo -e 'hello\nworld'
x=$(a_function "x")
echo $x
echo "---Post function"
printf %"s\n" hello world
printf "Hello\nworld"
echo El problema es esetodas de los ecos en la función están concatenados juntos,después de ser recortado individualmente, y luego regresó como un todo.
Así que esto me lleva a dos preguntas: ¿cómo depurar una función que devuelve un valor y cómo se agregan nuevas líneas a una variable (no es que quiera hacer esto último necesariamente, pero me gustaría entenderlo)?
hello\nworld'
echo -e 'hello\nworld'
$ bash ./initial_script5.sh
---Pre function
hello
world
Hello
worldhello
world
hello
world
---In function hello world Hello worldhello world hello world
---Post function
hello
world
Hello
worldhello
world
hello
world
El problema es esetodas de los ecos en la función están concatenados juntos,después de ser recortado individualmente, y luego regresó como un todo.
Así que esto me lleva a dos preguntas: ¿cómo depurar una función que devuelve un valor y cómo se agregan nuevas líneas a una variable (no es que quiera hacer esto último necesariamente, pero me gustaría entenderlo)?