lib.sh
私のスクリプトに含めることができる定数と関数の「ライブラリ」を持ちます(script.sh
)。
. /myfolder/lib.sh
......
スクリプトに含まれているファイル(たとえば./myfolder/lib.sh
で置き換えられたファイルlib.sh
)をマージする方法はありますか?
答え1
使用sed
:
sed -i.bak '\|^\. /myfolder/lib\.sh| {
r /myfolder/lib.sh
d
}' script.sh
このスクリプトの機能は次のとおりです。
\|^\. /myfolder/lib\.sh| { ... }
=>中括弧で始まる行を見つけ、中. /myfolder/lib.sh
括弧内のコマンドを実行します。r /myfolder/lib.sh
=>出力内容/myfolder/lib.sh
d
=> 行の削除(. /myfolder/lib.sh
)
もちろん、他の行はそのまま残ります。
答え2
テストされていません:GNU awkを使用する
gawk -i inplace '
$1 == "." {system("cat " $2); next}
{print}
' script.sh