0

我正在研究一个 500 行的 shell 脚本,有什么想法可以将其分解为较小的模块或可在 main.sh 文件中调用的可重用 shell 脚本吗?我正在寻找代码的可维护性和可重用性,即 DRY。

当我尝试在 first.sh 和 second.sh 等中调用 break down main.sh 时。

在哪里

    first.sh
    FOO=fobar
    function hello(){
    echo "hellow
    }
    main.sh
    echo "calling main script by including sub scripts"
    first.sh
    echo $FOO
    hello

当我运行 ./main.sh 输出时,我无法访问我的变量和方法 line 20: hello: command not found

4

1 回答 1

1

鉴于您已经有许多函数,请考虑将这些函数移动到单独的文件中(通常是“.sh”后缀),因此创建可以作为脚本(或其他脚本)的源的库。

理想情况下,该库将只有函数定义和变量初始化。如果需要并且可能,您可以创建多个库,将相关功能组合在一起。

我的脚本

source myscript-lib.sh

  # Call functions from library
hello

myscript-lib.sh

function hello {
   echo "Hello"
}

注意 1:'source ...' 将使用 PATH 来定位没有完整路径名的脚本。从问题参考到first.sh,这似乎与当前代码一致,可能.在 PATH 中。

注意 2:“源”可以替换为“.”,但这会(以我的经验)创建可读性较差的代码. myscript-lib.sh

于 2019-11-06T05:14:14.603 回答