Unix / Linux - Variáveis Especiais
Neste capítulo, discutiremos em detalhes sobre variáveis especiais no Unix. Em um de nossos capítulos anteriores, entendemos como ter cuidado ao usar certos caracteres não alfanuméricos em nomes de variáveis. Isso ocorre porque esses caracteres são usados nos nomes de variáveis especiais do Unix. Essas variáveis são reservadas para funções específicas.
Por exemplo, o $ caractere representa o número de identificação do processo, ou PID, do shell atual -
$echo $$
O comando acima escreve o PID do shell atual -
29949
A tabela a seguir mostra uma série de variáveis especiais que você pode usar em seus scripts de shell -
Sr. Não. | Variável e Descrição |
---|---|
1 | $0 O nome do arquivo do script atual. |
2 | $n Essas variáveis correspondem aos argumentos com os quais um script foi chamado. Aquin é um número decimal positivo correspondente à posição de um argumento (o primeiro argumento é $ 1, o segundo argumento é $ 2 e assim por diante). |
3 | $# O número de argumentos fornecidos a um script. |
4 | $* Todos os argumentos estão entre aspas duplas. Se um script receber dois argumentos, $ * é equivalente a $ 1 $ 2. |
5 | $@ Todos os argumentos são individualmente aspas duplas. Se um script receber dois argumentos, $ @ é equivalente a $ 1 $ 2. |
6 | $? O status de saída do último comando executado. |
7 | $$ O número do processo do shell atual. Para scripts de shell, este é o ID do processo sob o qual eles estão executando. |
8 | $! O número do processo do último comando em segundo plano. |
Argumentos de linha de comando
Os argumentos de linha de comando $ 1, $ 2, $ 3, ... $ 9 são parâmetros posicionais, com $ 0 apontando para o comando, programa, script de shell ou função real e $ 1, $ 2, $ 3, ... $ 9 como os argumentos para o comando.
O script a seguir usa várias variáveis especiais relacionadas à linha de comando -
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
Aqui está um exemplo de execução do script acima -
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
Parâmetros especiais $ * e $ @
Existem parâmetros especiais que permitem acessar todos os argumentos da linha de comando de uma vez. $* e $@ ambos agirão da mesma forma, a menos que estejam entre aspas duplas, "".
Ambos os parâmetros especificam os argumentos da linha de comando. No entanto, o parâmetro especial "$ *" pega a lista inteira como um argumento com espaços entre e o parâmetro especial "$ @" pega a lista inteira e a separa em argumentos separados.
Podemos escrever o script de shell como mostrado abaixo para processar um número desconhecido de argumentos de linha de comando com os parâmetros especiais $ * ou $ @ -
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
Aqui está um exemplo de execução do script acima -
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
Note - aqui do...done é um tipo de loop que será abordado em um tutorial subsequente.
Status de saída
o $? variável representa o status de saída do comando anterior.
O status de saída é um valor numérico retornado por cada comando após sua conclusão. Como regra, a maioria dos comandos retorna um status de saída 0 se foram bem-sucedidos e 1 se não tiveram êxito.
Alguns comandos retornam status de saída adicionais por motivos específicos. Por exemplo, alguns comandos diferenciam entre os tipos de erros e retornam vários valores de saída dependendo do tipo específico de falha.
A seguir está o exemplo de comando bem-sucedido -
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$