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
Vi Diff - Não é um guia de vi, mas é muito útil
Como exibir números com um largura fixa de caracteres, complentando com zeros a esquerda
Ubuntu 10.04 / Gnome 2.30 - Barra de localização "editável" do Nautilus
basename - Inserindo ponto separador de milhar em expressão numérica
Leitura recomendada
Bloquear servidor por falta de pagamento
Jogo da Forca em Shell Script
Sockets em shell script
Shell script com texto colorido
Script para verificar LOGs do Squid e selecionar páginas a serem bloqueadas
Comentários
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}'
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)
Mensagem
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)
@jonatas_rg
Obrigado pela explicação. O basename é uma boa solução que também desconhecia.
Mensagem
@jonatas_rg
Obrigado pela explicação. O basename é uma boa solução que também desconhecia.
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)
Mensagem
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
Enviar