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