読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

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

シェルスクリプト

シェルスクリプトでパス文字列からファイル名/ディレクトリ名/拡張子を抽出するより。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シェルスクリプト/特殊な変数展開がわかりやすいのでそちらを参照ください。


参考: