![将字符串拆分为路径和应用程序](https://linux22.com/image/81260/%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8B%86%E5%88%86%E4%B8%BA%E8%B7%AF%E5%BE%84%E5%92%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
如果我有一个字符串,例如
/home/user/a/directory/myapp.app
要不就
/home/user/myapp.app
我怎样才能分割它,以便我只有两个变量(路径和应用程序)
例如
path="/home/user/"
appl="myapp.app"
我见过很多分割字符串的例子,但是我怎样才能得到最后一部分,并结合所有其余部分呢?
答案1
命令basename
和dirname
可用于此目的,例如:
$ basename /home/user/a/directory/myapp.app
myapp.app
$ dirname /home/user/a/directory/myapp.app
/home/user/a/directory
如需了解更多信息,请随时执行man basename
和man 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
则更加优雅。也可以看看这个问题进行更多讨论。