微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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退出时不会被杀死.最终结果是将脚本转换为守护程序,因此无论父脚本发生了什么,它们都将在后台连续运行.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐