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
Tirinhas e histórias em quadrinhos pelo Linux
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
Padrao Aberto de Documentos - uma grande chance de liberdade - E viva o Linux!
basename - Inserindo ponto separador de milhar em expressão numérica
Leitura recomendada
Liberando uma máquina para acessar sites bloqueados pelo Squid
Como criar um cronômetro em modo texto
Verificando se um arquivo cabe dentro de um DVD
Script para iniciantes esquecidos
Compilação Kernel 4.0.3 no Slackware
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