Variável para guardar o nome do Script

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

[ Hits: 7.930 ]

 


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

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

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

Vi Diff - Não é um guia de vi, mas é muito útil

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

Tirinhas e histórias em quadrinhos pelo Linux

Leitura recomendada

Sockets em shell script

GNU parallel - Um ferramenta para execução de processos em paralelo

Modem USB Giant D301 - GSM/3G no Ubuntu 8.04

Bloqueando Facebook com IPtables (de forma fácil, intuitiva e eficiente)

Kernel for Newbies - Fácil Assistente de Compilação do Kernel

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts