拥有一个包含常量和函数的“库”(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