Crie, grave e salve o arquivo de um script Shell

8

Eu não quero escrever o arquivo manualmente, então fiz um script de shell. Existe uma maneira de escrever & amp; salvar o arquivo automaticamente sem fazer com que o usuário pressione as teclas?

sudo nano blah
#write stuff to file
#save file
#continue

^ Isso estará dentro de um arquivo * .sh

Ou existe outra maneira de criar um arquivo de texto simples em um script?

    
por Zarkopafilis 13.04.2014 / 11:29

2 respostas

13

Para sequências mais complexas de comandos, você deve considerar o uso do comando cat com um documento aqui . O formato básico é

command > file << END_TEXT
some text here
more text here
END_TEXT

Existem dois comportamentos sutilmente diferentes dependendo se o marcador END_TEXT está entre aspas ou não:

  1. rótulo sem aspas : o conteúdo é escrito após as expansões comuns de shell

  2. label entre aspas : o conteúdo do documento here é tratado literalmente, sem as expansões usuais de shell

Por exemplo, considere o seguinte script

#!/bin/bash

var1="VALUE 1"
var2="VALUE 2"

cat > file1 << EOF1
do some commands on "$var1" 
and/or "$var2"
EOF1

cat > file2 << "EOF2"
do some commands on "$var1" 
and/or "$var2"
EOF2

Os resultados são

$ cat file1
do some commands on "VALUE 1" 
and/or "VALUE 2"

e

$ cat file2
do some commands on "$var1" 
and/or "$var2"

Se você estiver emitindo comandos do shell do seu script, provavelmente desejará o formulário citado.

    
por steeldriver 13.04.2014 / 12:30
6

Não há necessidade de mexer com um editor para fazer isso.

Você pode acrescentar algo a um arquivo com um simples comando echo. Por exemplo

echo "Hello World" >> txt

Anexará "Hello world" ao arquivo txt . se o arquivo não existir, ele será criado.

Ou se o arquivo já existir e você quiser sobrescrevê-lo

echo "Hello World" > txt

Para a primeira linha: e

echo "I'm feeling good" >> txt
echo "how are you" >> txt 

Para linhas subsequentes.

No mais simples, o script .sh poderia conter apenas um conjunto de comandos de eco.

    
por Warren Hill 13.04.2014 / 11:52