unix shell tips para atribuir um valor booleano à variável de um teste

0

código para mostrar o pedido no contexto (unix ksh atualmente):

r=$( [ -z "foo" ] && echo true || echo false ) 

existe uma maneira melhor e mais simples de atribuir r com verdadeiro ou falso, algo como r=$( [ -z "foo" ]) (que parece dar um valor vazio) ou r=[ -z "foo" ] que falhou.

    
por NeronLeVelu 20.03.2018 / 11:43

2 respostas

1

A construção [ ... ] (ou o equivalente test ... ) retorna um código de conclusão de 0 para true ou 1 para false, mas nunca gera nenhuma saída, portanto $( [ ... ] ) sempre retorna uma string vazia. O código de conclusão retornado está em $? , portanto r pode ser definido como 0 ou 1 por:

[ -z "foo" ]; r=$?

Se você quiser os valores de texto true e false em r (em oposição a 0 e 1), então sua expressão está basicamente correta, mas o seguinte é um pouco mais simples:

[ -z "foo" ] && r=true || r=false
    
por 20.03.2018 / 12:32
0

Não é o caso aqui:

$ b=false
$ r=$b
$ echo $r
false
$ 
    
por 20.03.2018 / 11:46

Tags