acrescentando uma variável a um arquivo no Bash não funcionando

3

Eu tenho um código como este

#! /bin/bash

$version = "1.0";
$preffix = "ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo $preffix >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo $version >> myFile.txt
done;

a saída é

bla bla bla

more stuff

$ version e $ preffix não são adicionados ao myFile.txt ... por quê?

    
por SpaceDog 22.11.2012 / 18:33

2 respostas

5

Este programa funcionará onde o seu não funciona:

#!/bin/bash

version="1.0";
preffix="ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo $preffix >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo $version >> myFile.txt
done;

Seu carinho por espaços torna seu programa mais legível e também faz com que ele não funcione.

Além disso, embora não seja importante para este programa, seria uma boa ideia fazer isso:

#!/bin/bash

version="1.0";
preffix="ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo "$preffix" >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo "$version" >> myFile.txt
done;

Isso porque, se você fez algo como:

version='1  2'

no seu programa original, você acabaria com um resultado inesperado. Colocar aspas em torno de suas variáveis é uma boa ideia para evitar erros misteriosos como esse.

    
por 22.11.2012 / 19:04
6

O sinal $ na frente das variáveis é usado para lê-las.

Se você quiser atribuí-los, terá que deixar de fora o sinal $ , ou seja:

version="1.0"
preffix="ApplicationName."

Além disso, os ; não são necessários no final das linhas de atribuição.

    
por 22.11.2012 / 18:43

Tags