<Anterior | Conteúdo | Próxima>
Expansões para gerenciar variáveis vazias
Diversas expansões de parâmetros são destinadas a lidar com variáveis inexistentes e vazias. Essas expansões são úteis para lidar com parâmetros posicionais ausentes e atribuir valores padrão aos parâmetros.
${parâmetro:-palavra}
If parâmetro não está definido (ou seja, não existe) ou está vazio, esta expansão resulta no valor de palavra. Se parâmetro não está vazio, a expansão resulta no valor de parâmetro.
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo: - "valor substituto se não definido"}
substitua o valor se não estiver definido [me @ linuxbox ~] $ echo $ foo
[me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo: - "valor substituto se não definido"}
Barra
[me @ linuxbox ~] $ echo $ foo
Barra
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo: - "valor substituto se não definido"}
substitua o valor se não estiver definido [me @ linuxbox ~] $ echo $ foo
[me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo: - "valor substituto se não definido"}
Barra
[me @ linuxbox ~] $ echo $ foo
Barra
${parâmetro:=palavra}
If parâmetro não está definido ou vazio, esta expansão resulta no valor de palavra. Além disso, o valor de palavra está atribuído a parâmetro. Se parâmetro não está vazio, a expansão resulta no valor de parâmetro.
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo: = "valor padrão se não definido"}
valor padrão se não definido [me @ linuxbox ~] $ echo $ foo valor padrão se não definido [me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo: = "valor padrão se não definido"}
Barra
[me @ linuxbox ~] $ echo $ foo
Barra
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo: = "valor padrão se não definido"}
valor padrão se não definido [me @ linuxbox ~] $ echo $ foo valor padrão se não definido [me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo: = "valor padrão se não definido"}
Barra
[me @ linuxbox ~] $ echo $ foo
Barra
Nota: Parâmetros posicionais e outros parâmetros especiais não podem ser atribuídos dessa forma.
${parâmetro:?palavra}
If parâmetro não está definido ou está vazio, esta expansão faz com que o script saia com um erro e o conteúdo de palavra são enviados para o erro padrão. Se parâmetro não está vazio, a expansão resulta no valor de parâmetro.
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo:? "parâmetro está vazio"}
bash: foo: o parâmetro está vazio [me @ linuxbox ~] $ eco $?
1
[me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo:? "parâmetro está vazio"}
Barra
[me @ linuxbox ~] $ eco $?
0
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo:? "parâmetro está vazio"}
bash: foo: o parâmetro está vazio [me @ linuxbox ~] $ eco $?
1
[me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo:? "parâmetro está vazio"}
Barra
[me @ linuxbox ~] $ eco $?
0
${parâmetro:+palavra}
If parâmetro não estiver definido ou vazio, a expansão não resultará em nada. Se parâmetro não está vazio, o valor de palavra é substituído por parâmetro; no entanto, o valor de parâmetro não é alterado.
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo: + "valor substituto se definido"}
[me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo: + "valor substituto se definido"}
[me @ linuxbox ~] $ foo =
[me @ linuxbox ~] $ echo $ {foo: + "valor substituto se definido"}
[me @ linuxbox ~] $ foo = bar
[me @ linuxbox ~] $ echo $ {foo: + "valor substituto se definido"}
substitua o valor se definido
substitua o valor se definido