O que PROG = $ {0 ## * /} significa em um script bash? [duplicado]

0

PROG=${0##*/} parece analisar o nome do script de shell, mas não está claro como isso funciona. $ {0} Eu entendo é a primeira ou a 0ª variável.

    
por tarabyte 07.07.2015 / 22:56

1 resposta

4

Como Tarabyte alude, isso tem que lidar com a expansão de parâmetros.

$ 0 é o nome e o caminho com o qual este script foi executado. Por exemplo, se você chamar /usr/bin/example.sh, $ 0 será "/usr/bin/example.sh". Se o seu diretório de trabalho atual for / usr e você chamar o mesmo script com ./bin/example.sh, $ 0 será "./bin/example.sh".

Quanto ao "#", isso significa expandir $ 0 após remover o prefixo especificado anteriormente. Nesse caso, o prefixo especificado anteriormente é o * / glob. Um único "#" não é ganancioso, então após ele corresponder ao primeiro * / glob, ele será interrompido. Por isso, irá remover o primeiro "/" e tudo antes dele. Dois "#" significam remover avidamente todos os arquivos * /. Então, ele irá remover todos os "/" e tudo que vem antes deles.

Editar Resumo: $ {0 ## * /} é equivalente a $ (basename $ 0), mas sem o bifurcação extra

    
por 07.07.2015 / 23:06

Tags