Linux Shell脚本-分隔符问题

工作中写shell脚本时遇到读取文件并按分隔符解析每行数据,分隔符单独一行,导致通过地址参数登录数据库报错,需要将分隔符写入循环条件中。

分隔符单独一行:

复制代码
#!/bin/bash

ora_data()
{
	# 设置分隔符
	IFS='|'
	
	# 读取文件中的每一行
	# 读取客户号变更文件并创建临时表导入 clientno.txt文件格式:序号|新客户号|旧客户号
	while read -r field1 field2 field3
	do
		# 打印读取的字段
		# echo $field1,$field2,$field3
		# 拼接sql语句写到 clientno_import.sql文件中
		echo "insert into clientnotmp values ('"$field1"','"$field2"','"$field3"');" >> clientno_import.sql
	done < clientno.txt
	
	${_DATASOURCE_CONN_} <<-! 
	select * from tbsysinfo;
	exit
	!
}

_DATASOURCE_CONN_="sqlplus -s ifm60/abc_123@10.22.2.2:1521/orcl"
ora_data

报错信息:

dbmovegznsyh@oracle test\]$ sh 1.sh 1.sh:行18: sqlplus -s ifm60/abc_123@10.22.2.2:1521/orcl: 没有那个文件或目录

将分隔符放至循环语句中:

复制代码
#!/bin/bash

ora_data()
{
	# 设置分隔符
	# 读取文件中的每一行
	# 读取客户号变更文件并创建临时表导入 clientno.txt文件格式:序号|新客户号|旧客户号
	while IFS='|' read -r field1 field2 field3
	do
		# 打印读取的字段
		# echo $field1,$field2,$field3
		# 拼接sql语句写到 clientno_import.sql文件中
		echo "insert into clientnotmp values ('"$field1"','"$field2"','"$field3"');" >> clientno_import.sql
	done < clientno.txt
	
	${_DATASOURCE_CONN_} <<-! 
	select * from tbsysinfo;
	exit
	!
}

_DATASOURCE_CONN_="sqlplus -s ifm60/abc_123@10.22.2.2:1521/orcl"
ora_data

执行结果:

dbmovegznsyh@oracle test\]$ sh 2.sh P BANK_NO HOST_CHECK_DATE P DAYEND S INIT_DATE - -------------------------------- --------------- - ------ - ---------- B 000 20200101 0 0 0 0 0 000 20200101 0 0 0 0 1 000 20200101 0 0 0 0 8 000 20200101 0 0 0 0

相关推荐
Johny_Zhao7 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao21 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1232 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑2 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件2 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI3 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行4 天前
Linux和window共享文件夹
linux
Sinclair4 天前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器