文字列をパスとアプリケーションに分割

文字列をパスとアプリケーションに分割

次の文字列がある場合

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

そうでなければ

/home/user/myapp.app 

2つの変数(パスとアプリケーション)を持つように分割するにはどうすればよいですか?

例えば

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シェルの場合:

$ 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.appmyapp.appおよび裏面/path/to/myapp.app/basenameがよりdirnameエレガントです。また、見ることができますこの問題もっと議論してみてください。

関連情報