Usando variáveis no Bash

Uma variável de shell pode ser global ou local. Variáveis globais, ou de ambiente, podem ser acessadas em todos os shells. As variáveis locais, ao contrário, são visíveis apenas no shell atual.

Para ver todas as variáveis de ambiente, use o comando printenv. Se for preciso saber o valor de uma variável, insira o nome da variável como argumento:

printenv PATH

Uma variável, seja ela global ou local, também pode ser visualizada com echo:

echo $PATH

Para definir uma variável local, use um nome de variável, seguido pelo sinal de igual, seguido pelo valor:

PROJECT="SLED"

Não insira espaços antes e depois do sinal de igual, senão você obterá um erro. Para definir uma variável de ambiente, use export:

export NAME="tux"

Para remover uma variável, use unset:

unset NAME

A tabela a seguir contém algumas variáveis de ambiente comuns que podem ser usadas nos seus scripts shell:

Tabela 7.5. Variáveis de ambiente úteis

HOME

diretório pessoal do usuário atual

HOST

nome do host atual

LANG

quando uma ferramenta é localizada, ela usa o idioma dessa variável de ambiente. Também é possível definir o idioma inglês como C

PATH

caminho de pesquisa do shell, uma lista de diretórios separados por dois-pontos

PS1

especifica o prompt normal impresso antes de cada comando

PS2

especifica o prompt secundário impresso quando você executa um comando em várias linhas

PWD

diretório de trabalho atual

USER

usuário atual


Usando variáveis de argumento

Por exemplo, se você tiver o script foo.sh, poderá executá-lo desta maneira:

foo.sh "Tux Penguin" 2000 

Para acessar todos os argumentos que são passados ao seu script, você precisa de parâmetros de posição. Isto é, $1 para o primeiro argumento, $2 para o segundo e assim sucessivamente. É possível usar até nove parâmetros. Para obter o nome do script, use $0.

O script foo.sh a seguir imprime todos os argumentos de 1 a 4:

#!/bin/sh
echo \"$1\" \"$2\" \"$3\" \"$4\"

Se você executar esse script com os argumentos acima, obterá:

"Tux Penguin" "2000" "" ""

Usando substituição de variável

As substituições de variáveis aplicam um padrão ao conteúdo de uma variável, seja da esquerda ou da esquerda. A lista a seguir contém as formas de sintaxe possíveis:

${VAR#padrão}

remove a correspondência mais curta possível da esquerda:

file=/home/tux/book/book.tar.bz2
echo ${file#*/}
home/tux/book/book.tar.bz2
${VAR##padrão}

remove a correspondência mais longa possível da esquerda:

file=/home/tux/book/book.tar.bz2
echo ${file##*/}
book.tar.bz2
${VAR%padrão}

remove a correspondência mais curta possível da direita:

file=/home/tux/book/book.tar.bz2
echo ${file%.*}
/home/tux/book/book.tar
${VAR%%padrão}

remove a correspondência mais longa possível da direita:

file=/home/tux/book/book.tar.bz2
echo ${file%%.*}
/home/tux/book/book
${VAR/padrão_1/padrão_2}

substitui o conteúdo de VAR do padrão_1 pelo do padrão_2:

file=/home/tux/book/book.tar.bz2
echo ${file/tux/wilber}
/home/wilber/book/book.tar.bz2