我是shell脚本的新手,尝试从文本文件中读取员工ID列表,作为我的第一个shell脚本程序的一部分,并将其作为参数传递给另一个shell脚本。在第二个脚本中,我将该参数用于带有类似操作符的SQL选择命令。但我的问题是,该命令作为其他内容执行。
www.example.com的内容first.sh
#!/bin/sh
while IFS= read -r line;
do
/d/ShellScripts/second.sh $line
done < "$1"
www.example.com的内容second.sh
#!/bin/sh
EMP_ID=$1
sqlplus -s user/password@//localhost:1521/xepdb1 <<EOF
alter session set current_schema = HR;
set linesize 1000
select * from employees where EMPLOYEE_ID like "\'"%$EMP_ID"\'" ;
select * from employees where EMPLOYEE_ID like %{$EMP_ID} ;
EOF
list.txt的内容
101
102
103
在shell中执行的命令
$ ./first.sh list.txt
Session altered.
"\'"ct * from employees where EMPLOYEE_ID like "\'"%101
*
ERROR at line 1:
ORA-00911: invalid character
}elect * from employees where EMPLOYEE_ID like %{101
*
ERROR at line 1:
ORA-00911: invalid character
我试图从here获得帮助。我只是试图使用like操作符和shell脚本执行一个普通的SQL查询。
1条答案
按热度按时间5sxhfpxr1#
在bash脚本中,不需要转义字符的单引号('),只需将变量括在单引号中即可。
您可以second.sh通过以下命令更改www.example.com脚本行
到