interprism's blog

インタープリズム株式会社の開発者ブログです。

bashで変数に格納された文字列(path)を加工する色々な方法(妥協あり)

hiranoです。桜が綺麗です。

シェルスクリプトで変数に格納されている文字列の部分文字列を取得する方法がどうしても憶えられなくていつも何度もググって試してみることになるので備忘で記録しておきます。

未来のおれ、ここに書いたことを忘れるな!

記録したこと一覧

  • 基本編
    • 先頭1文字を取得
    • 先頭2文字を取得
    • 末尾1文字を取得
    • 末尾2文字を取得
    • 先頭1文字を削除して、残りを取得
    • 先頭2文字を削除して、残りを取得
    • 末尾1文字を削除して、残りを取得
    • 末尾2文字を削除して、残りを取得
  • 応用編
    • 先頭が / で始まっていたら削除して、残りを取得
    • 末尾が / で終わっていたら削除して、残りを取得
  • 諦め編

基本編

オリジナル

${ORG} => /var/www/html

先頭1文字を取得

${ORG:0:1} => /

先頭2文字を取得

${ORG:0:2} => /v

末尾1文字を取得

${ORG: -1} => l

※コロンの後の空白が重要

末尾2文字を取得

${ORG: -2} => ml

※コロンの後の空白が重要

先頭1文字を削除して、残りを取得

${ORG:1} => var/www/html

先頭2文字を削除して、残りを取得

${ORG:2} => ar/www/html

末尾1文字を削除して、残りを取得

${ORG:0:-1} => /var/www/htm

末尾2文字を削除して、残りを取得

${ORG:0:-2} => /var/www/ht

応用編

オリジナル

${ORG1} => var/www/html

${ORG2} => /var/www/html/

先頭が / で始まっていたら削除して、残りを取得

${ORG1#/} => var/www/html

${ORG2#/} => var/www/html/

末尾が / で終わっていたら削除して、残りを取得

${ORG1%/} => var/www/html

${ORG2%/} => /var/www/html

諦め編

いずれも変数でやろうとしましたが、パターン多すぎて無理ゲーだったので実現方法だけ載せます。

dirnamebasename は優秀です。

オリジナル

${ORG1} => var/www/html

${ORG2} => /var/www/html/

${ORG3} => /var

${ORG4} => html

ディレクトリを取得

dirname ${ORG1} => var/www

dirname ${ORG2} => /var/www

dirname ${ORG3} => /

dirname ${ORG4} => .

末端のディレクトリを取得

basename ${ORG1} => html

basename ${ORG2} => html

basename ${ORG3} => var

basename ${ORG4} => html

参考にさせていただいたサイト

PAGE TOP