Eu quero ecoar uma nova linha para um arquivo entre variáveis em um script de shell. Aqui está o meu código:
var1 = "Olá" var2 = "Mundo!" logwrite = "$ var1 [Aqui é onde eu quero inserir uma nova linha] $ var2 echo "$ logwrite" >> /Users/username/Desktop/user.txt
No momento, quando executo meu script, o arquivo user.txt mostra isso:
Olá Mundo!
Eu quero que ele mostre:
Olá Mundo!
Como eu faço isso??
EDIT: Aqui está o meu script de shell:
echo -n "Qual é o seu primeiro nome?" leia primeiro echo -n "Qual é o seu sobrenome?" leia por último echo -n "Qual é o seu nome do meio?" leia meio echo -n "Qual é o seu aniversário?" leia aniversário echo -e "Nome: $ first / nLast Name: $ last / nNome do meio: $ middle / nAniversário: $ birthday" >> /Users/matthewdavies/Desktop/user.txt qlmanage -p "~ / Desktop / user.txt"
shell
shell-script
echo
daviesgeek
fonte
fonte
printf "%s\n" $var1 $var2 >> file
?Respostas:
Explicação:
A
\n
sequência de escape indica um avanço de linha. Passar o-e
argumento para eco permite a interpretação de seqüências de escape.Pode até ser simplificado ainda mais:
ou até:
fonte
\n
em vez de/n
deve fazer o truque :)-e
sinalização.ou na verdade você não precisa de vars:
existe um problema com a resposta john t: se algum dos vars tiver a string \ n (ou alguma outra sequência como \ t), eles serão traduzidos. pode-se obter algo semelhante à sua resposta com printf:
também hmm. Vejo que você está compondo a resposta em uma variável $ logwrite. se esse é o único uso dessa variável, parece inútil.
Eu acho que um documento aqui pode ser mais legível, especialmente se você tiver muita linha para acrescentar ao log:
(esta palavra, EOF, é um delimitador que você pode escolher. pode ser qualquer palavra).
cuidado para que o heredoc expanda variáveis $, como aspas duplas. se você não quiser isso, cite o heredoc, como << "EOF"
fonte
\n
, daí o motivo de eu ter fornecido a resposta. A metodologia "e se" levaria todas as perguntas deste site a uma discussão sem fim. Quando ele vem para esse caminho que ele pode fazer outra pergunta :)printf
. É POSIX: stackoverflow.com/a/34947759/895245