[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Parameter Expansion
From: |
Thobias Salazar Trevisan |
Subject: |
Re: [shell-script] Parameter Expansion |
Date: |
Thu, 12 Jun 2003 11:03:23 -0300 (BRT) |
ae mauricio,
On Thu, 12 Jun 2003, Mauricio B. C. Vieira wrote:
> o problema é que quando executo em shell, pra testar, ele coloca o
> valor em VARIAVEL, mas também executa valor
>
> vieira@cidoque:~$ ${VARIAVEL:=valor}
> bash: valor: command not found
sim, pois, após a expansão o shell irá executar o cmd.
Para teste faça:
prompt> ${x:=ls}
ou em bash ou ksh
prompt> ${X=echo nada}
nada
> e não é nada prático fazer VARIAVEL=${VARIAVEL:=valor}
> A pergunta é: tem uma forma de fazer isto (usar o ':=' ) sem executar
> o valor? (não vale VARIAVEL=${VARIAVEL:=valor} )
podes usar o :, que é o comando true. Ele "não faz nada" e
retorna sempre zero.
prompt> : ${VAR:=valor}
prompt>
Assim, após a expansão ficará
prompt> : valor
prompt>
> A segunda pergunta é: isto funciona no sh (é portavel)?
funciona. pelo menos no sh do SunOS 5.7
a diferença entre o := e o :-
O := atribui e retorna o valor caso VAR não seje especificado,
e o :- apenas retorna o valor.
prompt> echo ${var:-valor}
valor
prompt> echo $var
prompt> echo ${var:=valor}
valor
prompt> echo $var
valor
prompt>
falow
thobias
-------
echo 9446046325380026818553633794429812592304650P | dc
-------
http://www.lcp.coppe.ufrj.br/~thobias
____________________________
|
| Against - HTML Mail
| Against - MS ATTACHMENTS
|
----------------------------
- Parameter Expansion, Mauricio B. C. Vieira, 2003/06/12
- Re: [shell-script] Parameter Expansion,
Thobias Salazar Trevisan <=