linux-BASH-使用相同“变量”的多个实例读入配置文件
作者:互联网
我正在尝试读取配置文件,然后将配置的“部分”放入bash脚本中的数组中,然后运行该命令,然后再次重新遍历配置,并继续执行此操作,直到配置文件的末尾.
这是一个示例配置文件:
PORT="5000" USER="nobody" PATH="1" OPTIONS="" PORT="5001" USER="nobody" PATH="1" OPTIONS="" PORT="5002" USER="nobody" PATH="1" OPTIONS=""
我希望bash脚本能在第一个“部分”中阅读,并将其带入脚本中,然后运行以下命令:
脚本名-p $PORT -u $USER -P $PATH -o $OPTIONS
但是,我希望它基于配置文件中有多少“节”来获取“节”的每次迭代,并以其相应的配置设置运行命令并将其应用于最终命令.因此,如果要从上面读取配置文件,则输出为:
scriptname -p $PORT -u $USER -P $PATH -o $OPTIONS scriptname -p $PORT -u $USER -P $PATH -o $OPTIONS scriptname -p $PORT -u $USER -P $PATH -o $OPTIONS
依次如下所示:
scriptname -p 5000 -u nobody -P 1 -o "" scriptname -p 5001 -u nobody -P 1 -o "" scriptname -p 5002 -u nobody -P 1 -o ""
提前致谢.
解决方法:
#!/bin/bash
if [[ $# -ne 1 ]]; then
echo "Usage: $0 script.cfg" >&2
exit 1
fi
function runscript() {
scriptname -p $PORT -u $USER -P $PATH -o $OPTIONS
}
while read LINE; do
if [[ -n $LINE ]]; then
declare "$LINE"
else
runscript
fi
done < "$1"
runscript
如果要同时在后台运行脚本,请尝试以下操作:
function runscript() {
nohup scriptname -p $PORT -u $USER -P $PATH -o $OPTIONS &> /dev/null &
}
&最后,它们使它们在后台运行,并且nohup确保它们在shell退出时不会被杀死.最终结果是将脚本转换为守护程序,因此无论父脚本发生了什么,它们都将在后台连续运行.
标签:bash,configuration-files,arrays,linux 来源: https://codeday.me/bug/20191023/1916550.html