以下の内容はhttps://unageanu.hatenablog.com/entry/20091224/1261663013より取得しました。


ファイルパスからディレクトリパス部分を取り出す。

シェルスクリプトでパス文字列からファイル名/ディレクトリ名/拡張子を抽出するより。bash「変数展開」を使うと、ファイルパスからディレクトリパス部分をさくっと取り出せます。具体例は以下。

$ path=aaa/bbb/ccc.bin
$ echo ${path%/*}
aaa/bbb
  • 変数展開「${<変数名>%<パターン>}」で「変数の末尾がパターンにマッチする場合、マッチした部分を削除」できるので、
  • パターンで「/*」を指定することで、ファイル名部分を除外したディレクトリパスが取得できる

という仕組みです。

なお、Bashシェルスクリプト/特殊な変数展開によると「bash」で追加された機能とのことなので、他のshでは使えないかもです。ローカル環境で↓を試して、

$ sh
sh-2.05b# path=aaa/bbb/ccc.bin
sh-2.05b# echo ${path%/*}
aaa/bbb

「あれ?shでも使えるんじゃね?」と思ったけど、「/bin/sh -> bash」だったので参考にならず・・・orz。

$ ls -la /bin/sh 
lrwxr-xr-x    1 root     root            4  3 27  2008 /bin/sh -> bash

他の変数展開の解説はBashシェルスクリプト/特殊な変数展開がわかりやすいのでそちらを参照ください。


参考:




以上の内容はhttps://unageanu.hatenablog.com/entry/20091224/1261663013より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14