Variáveis Especiais no Linux $0 $? $$ $# [Guia Básico]
Uma característica importante dos scripts de shell é a possibilidade de confirmação da execução com sucesso de um determinado comando.
Variáveis especiais de retorno
Ela é chamada de variável de retorno.
A variável de retorno é preenchida toda vez que um comando é executado. Se o valor retornado for 0, o comando foi executado com sucesso.
Se o valor for diferente de 0, algum problema foi encontrado.
Se for utilizada em scripts, o seu valor precisa ser verificado imediatamente após a execução do comando desejado.
Variável | Para que serve |
$# | Retorna o número de argumentos que o programa recebeu. |
$_ | O sublinhado (underscore) contém o nome absoluto do arquivo do shell ou script que está sendo executado como passado na lista de argumentos. |
$? | Variável de retorno do término da execução de um programa. |
$$ | Fornece o PID do processo do Shell. |
$! | Fornece o PID do último programa em execução em segundo plano. |
$0 | Retorna o nome do programa executado. |
$n | Retorna o argumento número n do programa. |
$* $@ | Retorna todos os argumentos informados na execução do programa. |
Veja o script de exemplo em que se usa essas variáveis:
#!/bin/bash
echo "Meu nome é: $0"
echo "Eu tenho $# argumentos passados na minha execução"
echo "Este é o resultado da última execução: $_"
echo "O primeiro argumento é: $1"
echo "O segundo argumento é: $2"
echo "O terceiro argumento é: $3"
echo "Meu PID é: $$"
echo "Meus argumentos são: $@"
echo "Meus argumentos são: $*"
Ao ser executado, produzirá o seguinte resultado:
$ ./script um dois tres
Meu nome é: ./script
Eu tenho 3 argumentos passados na minha execução
Este é o resultado da última execução: Eu tenho 3 argumentos passados na minha execução
O primeiro argumento é: um
O segundo argumento é: dois
O terceiro argumento é: tres
Meu PID é: 6210
Meus argumentos são: um dois tres
Meus argumentos são: um dois tres
Variável $?
A variável $? representa o status de saída do comando anterior.
Exemplo:
$ echo "Uirá" Uirá $ echo $? 0
Neste exemplo a variável $? irá mostrar o código de retorno do comado anterior echo “Uirá”.
Convencionou-se que quando um comando é executado sem erros, ele retornará o código de retorno 0 (zero). Quando há um erro, um valor maior que 1 será retornado, e dependendo do valor, o desenvolvedor do comando poderá fornecer uma lista de códigos de erro e seus significados.
Variável $!
A variável $! retornará o ID do processo do último comando em segundo plano:
$ ls &
[1] 27931
$ echo $! 27931
Não confunda com a variável $$
Variável $$
A variável $$ mostra o ID do processo do shell atual. Para scripts de shell, esse é o ID do processo no qual eles estão sendo executados:
$ echo $$
16487
$ ps -ef|grep 16487 16487 8098 0 junho/21 pts/18 00:00:01 bash
Variável $#
A variável $# retorna o número de argumentos que o programa recebeu. Pode ser usada em scripts quando se deseja saber se a quantidade de argumentos necessários foi satisfeito.
Uso de { }
As chaves podem ser usadas para se destacar para o shell uma variável que é usada “dentro” de um texto. Veja o exemplo:
$ x="tri" $ y="${x}ângulo" echo $y triângulo
Diferença entre $* e $@
- $* e $@ quando usados fora de aspas duplas são idênticos e se expandem para os argumentos.
- “$*” entre aspas retorna todos os argumentos como se fosse um único resultado separado por espaço. Argumentos “Um dois” “tres” vai retornar “um dois tres”, quebrando os espaços entre os argumentos, como se fossem três argumentos e não dois.
- “$@” vai retornar os argumentos exatamente como foram recebidos. “Um dois” “tres” vai retornar como dois argumentos “Um dois” “tres”, sem quebrar os espaços.
Conclusão
Se você está escrevendo um script de shell, é muito importante que você conheça as variáveis especias.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.