我正在尝试读取配置文件,然后将配置的“部分”放入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] 举报,一经查实,本站将立刻删除。