Como exibir os resultados com dois espaços de tabulações quando há um loop for

Como exibir os resultados com dois espaços de tabulações quando há um loop for

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 Hellomais 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 forloop, é 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 echoexpandirã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[*]^}"

informação relacionada