读取配置文件的shell脚本实现
时间:12-17 09:26 阅读:1242次
*温馨提示:点击图片可以放大观看高清大图
简介:最近,在从事开发工作的过程中,遇到了一个需求:用shell脚本实现对配置文件的读取,并将读取到的配置项写入到新的文件中。为了完成该需求,我们考虑使用awk命令,该命令把文件中的内容逐行的读入,按照特定的规则对每行记录进行处理。
例如,我们要从文件Config.ini(位于当前用户的etc目录下)中获取各个配置项的值,并将之写入到NetworkInfo.txt文件中。其中,Config.ini文件的内容如下:
[network]
; ip of database
ip=10.10.10.10
; port of database
port=9999
我们编写如下的shell脚本GetDatabaseConfig.sh:
#!/bin/ksh
CFG_FILE=$HOME/etc/Config.ini
IP=` awk '$1~/\[.*/{_cdr_par_=0}\
$0 ~ /^ *\[ *network *\]/ {_cdr_par_=1}\
$0~/^[\011 ]*ip *=.*/ { if(_cdr_par_==1) { sub("="," "); print $2; exit 0} }\
' ${CFG_FILE}`
PORT=` awk '$1~/\[.*/{_cdr_par_=0}\
$0 ~ /^ *\[ *network *\]/ {_cdr_par_=1}\
$0~/^[\011 ]*port *=.*/ { if(_cdr_par_==1) { sub("="," "); print $2; exit 0} }\
' ${CFG_FILE}`
main()
{
echo "ip =" $IP
echo "port =" $PORT
echo "[network]" >> NetworkInfo.txt
echo "ip=$IP" >> NetworkInfo.txt
echo "port=$PORT" >> NetworkInfo.txt
echo "finish !!!!!!!!!!!"
}
## Execute main function
main $*
将该脚本上传到Linux机器上,并使用“chmod 777 GetDatabaseConfig.sh”修改该脚本的权限,然后运行“./GetDatabaseConfig.sh”命令,结果如下:
ip = 10.10.10.10
port = 9999
finish !!!!!!!!!!!
同时,可以看到在当前目录下生成了NetworkInfo.txt文件,其内容为:
[network]
ip=10.10.10.10
port=9999