当前位置: 首页 > news >正文

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

相关文章:

  • java应用终止进程方式
  • Spring提供的SPEL表达式
  • Linux - 工具
  • 【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(七) -> JS动画(二)
  • 计算机毕业设计SpringBoot+Vue.js青年公寓服务平台(源码+文档+PPT+讲解)
  • MySQL 唯一索引下先事务A插入再事务B当前读是否阻塞问题
  • vue3中 组合式~测试深入组件:事件 与 $emit()—setup() 上下文对象ctx.emit
  • 前端文件加载耗时过长解决方案
  • 网络安全等级保护—定级
  • DeepSeek 3FS:端到端无缓存的存储新范式
  • Docker运行hello-world镜像失败或超时:Unable to find image ‘hello-world:latest‘ locally Trying to pull reposi
  • 安科瑞新能源充电桩解决方案:驱动绿色未来,赋能智慧能源
  • 利用50张可视化动图理解Mamba与状态空间模型
  • slam学习笔记9---ubuntu2004部署interactive_slam踩坑记录
  • 最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)
  • Android MVI架构模式详解
  • Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(一)
  • 嵌入式硬件设计SPI时需要注意什么?
  • Spring中的事务管理是如何实现的?
  • 信奥赛CSP-J复赛集训(模拟算法专题)(1):P8813 [CSP-J 2022] 乘方
  • php做网站脑图/东莞网络推广
  • 成都专业做网站的公司/seo门户网
  • 网站需要更新的频率/百度爱采购推广一个月多少钱
  • 婚礼做的好的婚庆公司网站/app用户量排名
  • 单页面推广网站/网页制作源代码
  • 中英文网站建设方案/开封网站seo