1.功能:shell 自动化配置icp-slam ini文件 rawlog文件 log文件位置
2.运行方式
1)将dealIni.sh 文件置于icp-slam文件夹下
2)将icp-slam.sh置于icp-slam文件夹下
3)在icp-slam工作目录运行命令
./icp-slam.sh icp_slam_demo_classic.ini all123.rawlog filelocation
//参数说明
icp_slam_demo_classic.ini 可替换为自己的ini文件
all123.rawlog可替换为自己的rawlog文件
filelocation 为输出的log文件所在的文件夹名称,可以自行设定
3.源码
1)dealIni.sh
#该脚本必须用 source 命令 而且结果获取为${var}获取,不是return 如:source readIni.sh 否则变量无法外传
# dealIni.sh iniFile section option
# read
# param : iniFile section option return value --- a str use: ${iniValue}
# param : iniFile section return options (element: option = value) --- a str[] use: arr_length=${#iniOptions[*]}} element=${iniOptions[0]}
# param : iniFile returm sections (element: section ) --- a str[] use: arr_length=${#iniSections[*]}} element=${iniSections[0]}
# write
#param : -w iniFile section option value add new element:section option result:if not --->creat ,have--->update,exist--->do nothing
#option ,value can not be null
#params
iniFile=$1
section=$2
option=$3
#sun
mode="iniR"
echo $@ | grep "\-w" >/dev/null&&mode="iniW"
if [ "$#" = "5" ]&&[ "$mode" = "iniW" ];then
iniFile=$2
section=$3
option=$4
value=$5
#echo $iniFile $section $option $value
fi
#resullt
iniValue='default'
iniOptions=()
iniSections=()
function checkFile()
{
#if [ "${iniFile}" = "" ] || [ 1 ];then
if [ "${iniFile}" = "" ] || [ ! -f ${iniFile} ]; then
echo "[error]:file --${iniFile}-- not exist!"
fi
}
function readInIfile()
{
if [ "${section}" = "" ];then
#通过如下两条命令可以解析成一个数组
allSections=$(awk -F '[][]' '/\[.*]/{print $2}' ${iniFile})
iniSections=(${allSections// /})
echo "[info]:iniSections size:-${#iniSections[@]}- eles:-${iniSections[@]}- "
elif [ "${section}" != "" ] && [ "${option}" = "" ];then
#判断section是否存在
allSe