在Ubuntu 21.04上,我安装了docker的oracle dtb,运行良好,我正在为sql开发人员使用它,但现在我需要在shell脚本中使用它。我不确定它是否可以这样工作,或者它是一些更好的方式。我正在尝试运行简单的脚本:
#!/bin/bash
SSN_NUMBER="${HOME}/bin/TESTS/sql_log.txt"
select_ssn () {
sudo docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus username/password@ORCLCDB;" <<EOF > $SSN_NUMBER
select SSN from employee
where fname = 'James';
quit
EOF
}
select_ssn
运行此命令后,没有任何React,我需要终止会话。或
输入设备不是TTY
显示
1条答案
按热度按时间l3zydbqr1#
从Docker外部指定here文档会有问题。请尝试将查询命令内联到Bash命令行中。记住
bash -c
的字符串参数可以是任意复杂的。我删除了
sudo
,但也许您真的需要它。我在快速浏览手册页的基础上向sqlplus
添加了-s
选项。这里的引号很复杂,我不确定是否需要额外的调整。我在shell脚本周围使用了双引号,这意味着引号内的一些内容在传递给容器之前将由调用shell处理。
在最坏的情况下,如果查询本身是静态的,那么在构建查询时将其存储在映像中的文件中将是最不令人惊讶的方法。