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

相关推荐
a1117766 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
我的xiaodoujiao7 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
吳所畏惧7 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈7 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
维天说8 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling8 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind8 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的阿森8 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森8 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
你想知道什么?8 小时前
线性回归-学习笔记
笔记·学习·线性回归