Variável para guardar o nome do Script

Publicado por Ario S. Assunção em 15/07/2011

[ Hits: 9.734 ]

 


Variável para guardar o nome do Script



Esta é uma variável ao mesmo tempo simples pela forma, complexa pela construção, mas muito útil para guardar o nome do script:

SCRIPT=${0##*/}

Diferentemente do parâmetro $0 a variável $SCRIPT vai armazenar somente o nome do script sem barras ou diretório.

Crie um script teste.sh e teste:

#!/bin/sh
SCRIPT=${0##*/}
ARQTMP=/tmp/$SCRIPT.$$
echo $0
echo $SCRIPT
echo $ARQTMP


Aproveitei para criação fácil de uma variável para o nome de um arquivo temporário, onde $$ é o número do PID do script corrente.

Obs.: Se criar arquivo temporário, não esquecer de remover no final do script:

rm -rf $ARQTMP
exit


Outras dicas deste autor

Exibir arquivo de grupos /etc/group de forma personalizada conforme o usuário

Ubuntu 10.04 / Gnome 2.30 - Barra de localização "editável" do Nautilus

Padrao Aberto de Documentos - uma grande chance de liberdade - E viva o Linux!

Tirinhas e histórias em quadrinhos pelo Linux

Como exibir números com um largura fixa de caracteres, complentando com zeros a esquerda

Leitura recomendada

Como criar e manter um mirror do Slackware em seu próprio micro

Seu CUPS para sozinho!?

Filtrando sites navegados por máquinas no log do Squid

Passagem de parâmetros para funções shell script

Curso de Shell Script Avançado

  

Comentários
[1] Comentário enviado por hellnux em 15/07/2011 - 20:56h

Bela Dica! Vou utilizar em meus scripts! Só faltou explicar o que acontece no ${0##*/}

O $$ desconhecia que exibia o PID.

Só para contribuir, outra maneira para o ${0##*/} seria: echo $0 | awk -F "/" '{print $NF}'



[2] Comentário enviado por jonatas_rg em 16/07/2011 - 02:17h

O que o ${0##*/} faz é apagar tudo antes do "/". é um irmão do "^.*/" das expressões regulares. Na verdade pode ser outro caractere qualquer no lugar do "/". Se quiser, pode dar uma olhada aqui pra aprender outros truques :)

http://aurelio.net/shell/canivete/#expansao


Só pra contribuir também, outra forma é usar o basename:

nome=$(basename $0)

[3] Comentário enviado por hellnux em 16/07/2011 - 19:42h

@jonatas_rg

Obrigado pela explicação. O basename é uma boa solução que também desconhecia.

[4] Comentário enviado por removido em 16/07/2011 - 22:34h

Pode passar o resultado desse script que você fez?
Fiquei curioso para testar mas vou estar sem linux até o final de semana (em ruindows agora)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts