
Me gustaría crear un código para obtener el siguiente resultado:
echo -e "\t\tPlease enter your name?"
read name
name="${name,,}"
for i in $(echo "Hello " $name) ; do
echo ${i^}
done | sed 's/^/\t\t/;s/$/, here is your order:/'
Si ingreso el nombre como:mike denver
La salida es:
<here come out the right space of two tabs>Hello, here is your order:
<here come out the right space of two tabs>Mike, here is your order:
<here come out the right space of two tabs>Denver, here is your order:
Básicamente, crea el espacio derecho desde el lado izquierdo según la cantidad de pestañas que puse ( \t
), pero repite la línea de impresión para Hello
más para cada nombre ingresado. No entendí cómo poner el comando sed afuera. Mi resultado esperado debería ser este:
<here come out the right space of two tabs>Hello, Mike Denver here is your order:
Respuesta1
En lugar de utilizar el for
bucle, es mucho más fácil hacer esto:
echo -e "\t\tPlease enter your name?"
read -a name
name="${name}"
echo -e "\t\tHello ${name[@]^}, here is your order:"
Producción:
Please enter your name?
mike denver
Hello Mike Denver, here is your order:
Las comillas dobles alrededor del argumento echo
expandirán la variable e imprimirán todo junto a la vez en el formato deseado.
Respuesta2
Podrías usar una matriz para el nombre y printf
:
read -p $'\t\tPlease enter your name?\n' -a name
name=( "${name[@],,}" )
printf '\t\tHello %s, here is your order:\n' "${name[*]^}"