将字符串拆分为路径和应用程序

将字符串拆分为路径和应用程序

如果我有一个字符串,例如

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

要不就

/home/user/myapp.app 

我怎样才能分割它,以便我只有两个变量(路径和应用程序)

例如

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

我见过很多分割字符串的例子,但是我怎样才能得到最后一部分,并结合所有其余部分呢?

答案1

命令basenamedirname可用于此目的,例如:

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

如需了解更多信息,请随时执行man basenameman dirname

答案2

对于任何 POSIX shell:

$ 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

避免两个进程分叉。

如果是/myapp.app,myapp.app/path/to/myapp.app, basename/dirname则更加优雅。也可以看看这个问题进行更多讨论。

相关内容