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