やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Bashでimportを再現する5(プレフィクスのリネーム)

 import ... as ...でプレフィクスをリネームできる。また、import ... -1など階層数を指定することでプレフィクス付与階層数を指定できる。

成果物

実行

git clone https://github.com/ytyaru/Shell.import.prefix.rename.2020012300000
cd ./src
./main.sh

importの準備

  1. moduled_import.shファイルをimportにリネームする
  2. importファイルが存在するディレクトリを環境変数PATHに通す

importの呼出例

  • repo/
    • main.sh
    • su b/
      • li b.sh

sub/lib.sh

Func() { echo 'Called su b/li b.sh Func()'; }

 以下のようなパターンがある。

main.sh

. import 'su b/li b.sh'
su-b.li-b.Func
. import 'su b/li b.sh' as LIB
LIB.Func
. import 'su b/li b.sh' as LIB.SUB
LIB.SUB.Func
. import 'su b/li b.sh' -0
Func
. import 'su b/li b.sh' -1
li-b.Func
. import 'su b/li b.sh' -2
su-b.li-b.Func

前回まで

注意

  • import自体を.(source)コマンドで読み込む必要がある
  • ファイル内で定義した関数名や変数名を変更できない
    • 実装しないつもりである
  • インポートのルートディレクトリはimport呼出元ファイルが存在するディレクトリです
  • 対応済みのスペース以外にもbashのメタ文字がある。$,(), {}, !, #, ", ', `, ~, \, ;。これらもハイフン化すべき
    • 一旦放置

所感

 次はベースディレクトリの変更に対応したい。

対象環境

$ uname -a
Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux