divide uma string em path e application

5

Se eu tiver uma string como

/home/user/a/directory/myapp.app 

ou apenas

/home/user/myapp.app 

como posso dividir isso para que eu tenha apenas duas variáveis (o caminho e o aplicativo)

por exemplo.

path="/home/user/"
appl="myapp.app"

Eu vi inúmeros exemplos de divisão de strings, mas como posso obter apenas a última parte e combinar todo o resto?

    
por IGGt 12.01.2016 / 17:15

2 respostas

11

Os comandos basename e dirname podem ser usados para isso, por exemplo:

$ basename /home/user/a/directory/myapp.app 
myapp.app
$ dirname /home/user/a/directory/myapp.app 
/home/user/a/directory

Para mais informações, não hesite em fazer man basename e man dirname .

    
por 12.01.2016 / 17:17
6

Com qualquer shell POSIX:

$ str=/home/user/a/directory/myapp.app
$ path=${str%/*}
$ app=${str##*/}
$ printf 'path is: %s\n' "$path"
path is: /home/user/a/directory
$ printf 'app is: %s\n' "$app"
app is: myapp.app

economize você por dois processos de bifurcação.

No caso de /myapp.app , myapp.app e /path/to/myapp.app , basename / dirname são mais elegantes. Veja também esta questão para mais discussão.

    
por 12.01.2016 / 17:21