当前位置: 首页 > 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

http://www.dtcms.com/a/54493.html

相关文章:

  • 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] 乘方
  • 从零开始学机器学习——什么是机器学习
  • 安卓音频框架混音器
  • java泛型(详细)
  • Vue 系列之:组件通讯
  • Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念
  • CS144 Lab Checkpoint 2: the TCP receiver
  • 【哇! C++】类和对象(三) - 构造函数和析构函数
  • B站文生视频模型工程实践
  • 使用CSS Grid布局时,如何避免元素重叠?
  • 鸿蒙开发学习笔记