杭州做网站公司网站备案查询系统
工作中写shell脚本时遇到读取文件并按分隔符解析每行数据,分隔符单独一行,导致通过地址参数登录数据库报错,需要将分隔符写入循环条件中。
分隔符单独一行:
#!/bin/bashora_data()
{# 设置分隔符IFS='|'# 读取文件中的每一行# 读取客户号变更文件并创建临时表导入 clientno.txt文件格式:序号|新客户号|旧客户号while read -r field1 field2 field3do# 打印读取的字段# echo $field1,$field2,$field3# 拼接sql语句写到 clientno_import.sql文件中echo "insert into clientnotmp values ('"$field1"','"$field2"','"$field3"');" >> clientno_import.sqldone < 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/bashora_data()
{# 设置分隔符# 读取文件中的每一行# 读取客户号变更文件并创建临时表导入 clientno.txt文件格式:序号|新客户号|旧客户号while IFS='|' read -r field1 field2 field3do# 打印读取的字段# echo $field1,$field2,$field3# 拼接sql语句写到 clientno_import.sql文件中echo "insert into clientnotmp values ('"$field1"','"$field2"','"$field3"');" >> clientno_import.sqldone < 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