shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Condições com IF


From: Julio C. Neves
Subject: Re: [shell-script] Condições com IF
Date: Wed, 15 Jan 2014 22:04:41 -0200

Desculpe-me Karin, mas o teu comentário tem algumas imprecisões e, para o bem de todos, preciso corrigi-las.

Em 15 de janeiro de 2014 13:08, Karin Klayton <address@hidden> escreveu:
 

Pessoal,

Somente retornando num ponto que o Julio C.Neves comentou, por questões de segurança, não seria sempre bom manter as variáveis fechadas entre {}?

Isso não tem nada a ver com segurança. Veja esta concatenação:
$ Var=5
$ echo $Var:
5:
$ echo Boa ideia é $Var1
$
$ echo Boa ideia é ${Var}1
Boa ideia é 51

Como o nome da variável só pode ser formado por letras, número e sublinha (_), não podendo começar por número, $Var: significa concatene um dois pontos a $Var. Porém $Var1 é um nome de variável válido e ela está vazia dando o resultado errado. Nesse caso, para concatenar o 1 a $Var, deve-se usar o par de chaves para limitar o nome da variável.

Outra situação que as chaves devem ser usadas é qdo se passa mais de 9 parâmetros para um programa. Assim se vc fizer p.ex. echo $12, ele concatenará 2 ao conteúdo do parâmetro $1. Para listar o 12º parâmetro deve-se fazer echo ${12}.

É por isso que construções do tipo ${...} são chamadas de expansão de parâmetros. Elas foram feitas inicialmente para facilitar o uso de parâmetros de ordem superior a 10.
 
Eu costumo por padrão utilizar na atribuição de valores a variáveis
VAR1=$(VALOR_OU_COMANDO), e na hora de referenciar elas utilizar as ${VAR1}.

Aqui tem 2 coisas que discordo:
    » Faça:
$ set
e veja a qtd absurda de variáveis do sistema estão predefinidas e aposto que vc não conhece 20% delas (eu não conheço). Repare ainda que todas estão em maiúscula. Aí que eu falo sobre segurança: um script do root pode inadvertidamente trocar uma variável de sistema e desestabilizá-lo. Uma coisa que já testemunhei foi uma tremenda surra que um aluno meu levou pq usou, sem querer e sem saber, uma variável do sistema. Ele colocava lá um valor e o sistema colocava outro. Qdo ele descobriu o erro, muito tempo depois, o script já estava todo bagunçado.

    » Qdo vc faz VAR1=$(VALOR_OU_COMANDO), ele tentará atribuir à variável $VAR1 a saída do prog VALOR_OU_COMANDO e, se não existir nenhum prog com esse nome, ele dará erro.

$ VAR1=$(VALOR_OU_COMANDO)
$ echo $VAR1
VALOR_OU_COMANDO: command not found
$ echo ${VAR1}
VALOR_OU_COMANDO: command not found
VAR1=$(ls | tail -3)
$ echo "$VAR1"
yad1.sh
yad2.sh
yyy

C.Q.D. ;)


Atenciosamente,
Karin Klayton Schiochet 

Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

São Paulo

4Linux

03-07/02

Curitiba

SoftSell

17-21/02

Rio de Janeiro

EDX

10-14/03

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]