Variável para guardar o nome do Script

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

[ Hits: 9.598 ]

 


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

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

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!

LibreOffice colando duplicado (Ctrl+c Ctrl-v duplicado)

basename - Inserindo ponto separador de milhar em expressão numérica

Leitura recomendada

Usando find para expandir listas de arquivos em argumentos de modo seguro

Políticas personalizadas do SELinux

Resoveldo problema com proxy no Conectividade Social

Usando o script alertaTwitter

Receber e-mail quando o root logar via SSH

  

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