如何在 bash 命令中声明变量。看到“?”
我认为我们几乎可以使用 ! 运行任何 bash 语句。或在前线主持
#!/bin/bash
sqlplus scott/tiger@orcl << EOF
! export v10="Hi" Doesn't work, why?
! echo $v10 Doesn't work, why?
! echo "Done" Works perfectly and also other bash commands
select * from dept; Works perfectly
exit
EOF
谢谢
最佳答案
@jordanm 所说的“可能”正是正在发生的事情。当您从 sqlplus 中指定主机命令时,会生成一个单独的 shell 进程,该进程执行该命令,然后该进程终止,控制权返回到 sqlplus。在该子 shell 进程中设置的任何环境变量仅在其内部有效,因此当它终止时,它们就会消失。
至于“工作”和“不起作用”的特定行..“export v10 =“Hi”确实有效,但没有“export”命令的标准输出显示,正如所解释的那样,该变量 v10一旦子进程完成并且控制权返回到 sqlplus,它就不再存在。“echo $v10”也可以工作,但由于这是一个新的 shell 进程,它对 $v10 没有任何值,因此没有任何内容可以回显。
您想通过在 sqlplus 中设置环境变量来实现什么目的?
关于sql - 在 sql EOF 中声明 bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233709/