gpt4 book ai didi

linux - BASH - 读取具有相同 "variable"的多个实例的配置文件

转载 作者:可可西里 更新时间:2023-11-01 11:50:52 25 4
gpt4 key购买 nike

我正在尝试读取配置文件,然后将配置的“部分”放入 bash 脚本中的数组中,然后运行一个命令,然后再次重复配置,并继续执行直到配置文件结束。

这是一个示例配置文件:

PORT="5000"USER="nobody"PATH="1"OPTIONS=""PORT="5001"USER="nobody"PATH="1"OPTIONS=""PORT="5002"USER="nobody"PATH="1"OPTIONS=""

我希望 bash 脚本在第一个“部分”中读取,将其放入脚本中,然后运行以下命令:
scriptname -p $PORT -u $USER -P $PATH -o $OPTIONS

但是,我希望它根据配置文件中有多少“部分”,对“部分”进行每次迭代,并使用相应的配置设置运行命令并将其应用于最终命令.所以如果它从上面读入配置文件,输出将是:

scriptname -p $PORT -u $USER -P $PATH -o $OPTIONSscriptname -p $PORT -u $USER -P $PATH -o $OPTIONSscriptname -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 退出时不会被杀死。最终效果是将脚本变成守护进程,这样无论父脚本发生什么情况,它们都会在后台持续运行。

关于linux - BASH - 读取具有相同 "variable"的多个实例的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3410306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com