Formato do nome do arquivo de script shell

1

O que significa o seguinte script de shell? Este é o ksh e o npfile também é uma variável que contém um nome de arquivo.

fileName=${npFile##/*/}
    
por C. Ross 13.05.2009 / 14:42

2 respostas

4

Remove a base do caminho do arquivo. Na expansão de variáveis, ## significa "pegue a coisa à minha direita, trate-a como um padrão e exclua a correspondência mais longa dela na variável à minha esquerda."

Nesse caso, o padrão é / * /, portanto, a correspondência mais longa de uma variável que incluía um caminho e um nome de arquivo seria o caminho. A exclusão deixaria apenas o nome do arquivo.

Parece ser uma maneira apenas de expansão de variáveis de escrever isso:

filename='basename $npFile'
    
por 13.05.2009 / 14:54
1

Isso apara "/ * /" (desde a primeira barra até a última barra) desde o início da string.

Então, se npFile="/ caminho / para / arquivo" - fineName se tornaria "arquivo"

    
por 13.05.2009 / 14:56