
Gostaria de criar um código para obter o seguinte 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:/'
Se eu inserir o nome como:mike denver
A saída é:
<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:
Basicamente, ele cria o espaço direito do lado esquerdo com base na quantidade de tabulações que coloquei ( \t
), mas repete a linha de impressão de Hello
mais para cada nome digitado. Não entendi como colocar o comando sed fora. Meu resultado esperado deve ser este:
<here come out the right space of two tabs>Hello, Mike Denver here is your order:
Responder1
Em vez de usar o for
loop, é muito mais fácil fazer isso:
echo -e "\t\tPlease enter your name?"
read -a name
name="${name}"
echo -e "\t\tHello ${name[@]^}, here is your order:"
Saída:
Please enter your name?
mike denver
Hello Mike Denver, here is your order:
Aspas duplas ao redor do argumento for echo
expandirão a variável e imprimirão tudo de uma vez no formato desejado.
Responder2
Você poderia usar uma matriz para o nome e printf
:
read -p $'\t\tPlease enter your name?\n' -a name
name=( "${name[@],,}" )
printf '\t\tHello %s, here is your order:\n' "${name[*]^}"