
Eu tenho uma variável $myvar
que contém duas linhas e quero colocar a primeira delas em uma nova variável.
Quando eu tento:
$ myvar1 = $(echo $myvar | head -n 1)
Não funciona porque echo não gera novas linhas como eu esperava.
Obviamente eu posso fazer isso:
$ myvar1 = $(echo $myvar | cut -d " " -f 1)
Funcionará porque a saída do echo contém uma palavra na primeira linha e uma palavra na segunda.
Eu tenho duas perguntas:
- Por que echo imprime espaços em vez de quebras de linha?
- É possível torná-lo mais fácil ou mais correto (não sou um profissional em shell script, talvez esteja faltando alguma coisa aqui)
Responder1
Coloque o argumento echo
entre aspas para reter os espaços em branco corretamente.
echo "$myvar"
Caso contrário, os elementos do valor separados por espaços em branco serão tratados como argumentos individuais para echo
.
$ ls -1
Desktop
Documents
Downloads
Movies
Music
Pictures
Sites
$ myvar="$( ls -1 )"
$ echo $myvar
Desktop Documents Downloads Movies Music Pictures Sites
$ echo "$myvar"
Desktop
Documents
Downloads
Movies
Music
Pictures
Sites
Para obter a primeira linha de algo, head -n1
funciona perfeitamente. Depende dos seus requisitos e dos valores possíveis se é realmente isso que você precisa.