如何在多个 Bash shell 脚本中包含可执行代码片段

How to include executable code snippet in multiple Bash shell scripts

我想要一个读取属性文件并在多个其他脚本中定义变量的代码片段,以避免在我的每个脚本中编写相同的代码。

例如,我希望能够包括如下所示的执行,在许多脚本中,在每个脚本进行一些初始工作后,彼此之间没有关系

    while IFS='=' read -r key value
    do
      echo "key ${key}"
      if [[ ${key} =~ ^# ]]; then
        echo "comment line ${key},  skipping....."
        continue
      fi
      eval ${key}=${value}
      echo "key ${key} :  value ${value}"
    done < kafka-env-parameters.txt

由于多个脚本的参数文件和定义的变量相同,我想避免在每个 shell 脚本中添加此代码段。

是否可以在 shell 脚本中这样做?如果是,怎么做?

谢谢

您可以使用此代码创建一个函数,将其放在一个 lib 文件中,比方说 readParams.lib[^1].

     readParamFile () {
      while IFS='=' read -r key value
      ....
      ....
      done < 
    }

然后使用 source readParams.lib 获取(包含)功能代码 并从不同的脚本中调用它,将要读取的文件的路径作为参数传递给函数:readParamFile kafka-env-parameters.txt

    <some code>   
    source readParams.lib 
    readParamFile kafka-env-parameters.txt 
    <some code>
    <some code>

[^1]: 感谢 Charles Duffy 对函数声明语法的更正。