linux shell脚本:读取csv文件到(数组)变量
一、构造csv文件
创建excel文件,分别在不同列输入不同的变量值。如下图示例,然后文件另存为ip.csv文件,上传到linux服务器,并赋予相关用户权限。
本例以使用不同用户连接不同ip的系统库举例
二、注意处理CSV文件每一行末尾的多余字符(换行符之类,会影响到变量值)
CSV格式文件每个记录位于单独的一行上,每一行用回车换行符进行分割(\r\n)
使用tr -d ‘\r’ <原文件> 新文件 命令 处理文件
tr -d '\r' <ip.csv> ip_pure.csv
三、读取CSV文件到变量值中
#/bin/bash
file="ip_pure.csv"
default_db=postgres
port=8000
function get_ip(){
#检查CSV文件是否存在
if [ ! -f "$file" ]; then
echo "CSV file doesn't exist"
exit
fi
#读取CSV文件到数组变量中
i=0
ipnum=0
while IFS=, read -r ip_tmp user_tmp pwd_tmp; do
dbip[$i]=${ip_tmp}
dbuser[$i]=${user_tmp}
dbpwd[$i]=${pwd_tmp}
i=`expr ${i} + 1`
ipnum=${i}
done < "$file"
##使用数组变量中的值
for ((i=0;i<${ipnum};++i));
do
host_ip=${dbip[$i]}
dba_user=${dbuser[$i]}
dba_pw=${dbpwd[$i]}
#连接串变量
gsql_connect="gsql -h ${host_ip} -d ${default_db} -p ${port} -U ${dba_user} -W ${dba_pw} -c "
##你可以接着做其他操作
done
}
get_ip