Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

Atribuição de valores a variáveis ​​e constantes

É aqui que nosso conhecimento sobre expansão realmente começa a dar frutos. Como vimos, às variáveis ​​são atribuídos valores desta forma:

variável=valor

onde variável é o nome da variável e valor é uma string. Ao contrário de algumas outras linguagens de programação, o shell não se preocupa com o tipo de dados atribuídos a uma variável; trata todos eles como cordas. Você pode forçar o shell a restringir a atribuição a inteiros usando o declarar comando com o -i opção, mas, como definir variáveis ​​como somente leitura, isso raramente é feito.

Observe que, em uma atribuição, não deve haver espaços entre o nome da variável, o sinal de igual e o valor. Então, em que pode consistir o valor? Qualquer coisa que possamos expandir em uma string:


a = z

b = "uma string"

c = "uma string e $ b"


d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta string \ n"

# Atribua a string "z" à variável a.

# Os espaços incorporados devem estar entre aspas.

# Outras expansões, como variáveis, podem ser

# expandido para a atribuição.

# Resultados de um comando.

# Expansão aritmética.

# Sequências de escape, como tabulações e novas linhas.

a = z

b = "uma string"

c = "uma string e $ b"


d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta string \ n"


imagem

Múltiplas atribuições de variáveis ​​podem ser feitas em uma única linha:



a = 5 b = "uma string"

a = 5 b = "uma string"


Durante a expansão, os nomes das variáveis ​​podem ser circundados por chaves opcionais “{}”. Isso é útil nos casos em que o nome de uma variável se torna ambíguo devido ao seu ambiente circundante


texto. Aqui, tentamos mudar o nome de um arquivo de meu arquivo para meuarquivo1, usando uma variável:



[me @ linuxbox ~] $ nome do arquivo = "meuarquivo" [me @ linuxbox ~] $ toque em $ nome do arquivo [me @ linuxbox ~] $ mv $ filename $ filename1

mv: operando do arquivo de destino ausente após `myfile 'Tente` mv --help' para mais informações.

[me @ linuxbox ~] $ nome do arquivo = "meuarquivo" [me @ linuxbox ~] $ toque em $ nome do arquivo [me @ linuxbox ~] $ mv $ filename $ filename1

mv: operando do arquivo de destino ausente após `myfile 'Tente` mv --help' para mais informações.


Esta tentativa falha porque o shell interpreta o segundo argumento do mv comando como uma nova (e vazia) variável. O problema pode ser superado desta forma:



[me @ linuxbox ~] $ mv $ filename $ {filename} 1

[me @ linuxbox ~] $ mv $ filename $ {filename} 1


Ao adicionar os colchetes ao redor, o shell não interpreta mais o 1 como parte do nome da variável.

Aproveitaremos esta oportunidade para adicionar alguns dados ao nosso relatório, nomeadamente a data e hora em que o relatório foi criado e o nome de utilizador do criador:



#! / Bin / bash

# Programa para gerar uma página de informações do sistema TITLE = "Relatório de informações do sistema para $ HOSTNAME"

CURRENT_TIME = $ (data + "% x% r% Z")

TIMESTAMP = "Gerado $ CURRENT_TIME, por $ USER"


echo "

$ TITLE

$ TITLE

$ TIMESTAMP

"

#! / Bin / bash

# Programa para gerar uma página de informações do sistema TITLE = "Relatório de informações do sistema para $ HOSTNAME"

CURRENT_TIME = $ (data + "% x% r% Z")

TIMESTAMP = "Gerado $ CURRENT_TIME, por $ USER"


echo "

$ TITLE

$ TITLE

$ TIMESTAMP

"


Top OS Cloud Computing na OnWorks: