Bash 在sqlplus comman中传递变量user、pass、sid

Bash 在sqlplus comman中传递变量user、pass、sid,bash,variables,oracle11g,command-line-arguments,sqlplus,Bash,Variables,Oracle11g,Command Line Arguments,Sqlplus,我想在我的bash脚本中的sqlplus命令中传递变量,答案可能会给出,但对我不起作用 我试过这样的东西 #!/bin/bash ssh oracle@10.116.12.26 <<XX echo Please enter an Oracle Username: read USERNAME echo "Please enter the Oracle Username's Password:" read -s PASS SID=XE export conn_str=$USERN

我想在我的bash脚本中的sqlplus命令中传递变量,答案可能会给出,但对我不起作用

我试过这样的东西

#!/bin/bash
ssh oracle@10.116.12.26 <<XX
echo Please enter an Oracle Username:
read USERNAME

echo "Please enter the Oracle Username's Password:"
read -s PASS 

SID=XE

export conn_str=$USERNAME/$PASS@$SID

sqlplus $conn_str  << EOF
select * FROM tabs;

exit
EOF
XX
我也找到了这样的解决方案 但对我不起作用

甲骨文:11g ,os:fedora 18

有什么解决办法吗?
谢谢。

您没有说实际发生了什么,但我猜您没有被提示输入凭据,并且可能找不到
sqlplus
。在一个红色的帽盒上:

#!/bin/bash
echo Please enter an Oracle Username:
read USERNAME
echo "Please enter the Oracle Username's Password:"
read -s PASS
SID=XE
conn_str=$USERNAME/$PASS@$SID

ssh oracle@10.116.12.26 << EOF
# set these for your specific environment
ORACLE_HOME=<path to ORACLE_HOME>
PATH=$PATH:$ORACLE_HOME/bin # or without .../bin depending on client
TNS_ADMIN=<path to tnsnames.ora directory, if not default>

sqlplus -s /nolog
connect $conn_str
select * FROM user_tables;
exit
EOF
#/bin/bash
echo请输入Oracle用户名:
读取用户名
echo“请输入Oracle用户名的密码:”
读s通行证
SID=XE
conn_str=$USERNAME/$PASS@$SID

sshoracle@10.116.12.26尝试引用您的here doc分隔符,以防止本地计算机上的过时变量扩展

ssh oracle@10.116.12.26 <<'XX'

sshoracle@10.116.12.26“不适用于我”不是错误消息。会发生什么?使用嵌套的
herdoc
正如@AlexPoole所评论的,问题是由于嵌套的
herdoc
造成的。将最后一行
XX
放在
SID=XE
@devnull之后-这不起作用,
sqlplus
将在本地主机上运行,而不是在
ssh
要运行的远程主机上。看起来嵌套是正常的,这有点令人惊讶。@Alex)Poole啊!没有意识到这一点。但是,在本例中,去掉第二个herdoc很简单。当我输入username&pass时,它会抛出类似这样的错误:不会分配伪终端,因为stdin不是终端。@krupal-好的,这应该是我的版本的一个警告(来自SSH),因为它在本地获取值。(虽然我没有一个Fedora实例来试用它;但我怀疑Red Hat和Fedora之间有那么大的不同)。你试用过这个版本吗?有些东西仍然不起作用吗?给定的密码为空“ORA-01005:给定的密码为空;拒绝登录”@krupal-不确定,我看不到;我想您可以在调试时显示
$conn_str
来检查值?oracle用户不在远程主机上,它在本地计算机上,但什么时候不停止输入密码
ssh oracle@10.116.12.26 <<'XX'