如何在多个 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 对函数声明语法的更正。
我想要一个读取属性文件并在多个其他脚本中定义变量的代码片段,以避免在我的每个脚本中编写相同的代码。
例如,我希望能够包括如下所示的执行,在许多脚本中,在每个脚本进行一些初始工作后,彼此之间没有关系
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 对函数声明语法的更正。