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
Exibir arquivo de grupos /etc/group de forma personalizada conforme o usuário
LibreOffice colando duplicado (Ctrl+c Ctrl-v duplicado)
basename - Inserindo ponto separador de milhar em expressão numérica
Vi Diff - Não é um guia de vi, mas é muito útil
Leitura recomendada
Liberando o acesso a ART NET com iptables
Limpando o .recycle do Samba
Limpar cache da memória RAM
Resoveldo problema com proxy no Conectividade Social
Backup em shell script na virtualização de máquinas (VMWare)
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