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
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
Exibir arquivo de grupos /etc/group de forma personalizada conforme o usuário
Leitura recomendada
FreeBSD - PF + Altq + MRTG
Jogo da Forca em Shell Script
Script para adicionar hosts no Nagios
Shell - operações envolvendo números em ponto flutuante
O Mais Prático ou o Mais Rápido? Alternativa ao cut -c
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