我需要使用sqlplus查询表并将值分配给shell变量。当前我正在进行的问题。我目前正在尝试的问题是
columnValue=`sqlplus -s username/muk\$mh@hostname:port/servicename <<EOF $value1
set heading off;
set scan on;
select column1 from table where ID='$id';
EXIT;
EOF`
echo $columnValue
其中muk $ mh是我的db密码。我试图跳过带有转义字符的$符号但仍然失败。 我能以任何方式解决这个问题。 感谢
答案 0 :(得分:0)
不确定您遇到的确切问题,但我可以看到转义字符存在问题。由于您希望shell扩展密码变量($ mh),因此您不应该转义$字符。试试这个:
columnValue=`sqlplus -s username/muk$mh@hostname:port/servicename <<EOF
set heading off;
set scan on;
select column1 from table where ID='$id';
EXIT;
EOF`
echo $columnValue
如果&#39; $ mh&#39;确切地说是你密码的一部分,然后我会认为&#34; $ value1&#34;在第一行末尾可能是个问题。
答案 1 :(得分:0)
单个反斜杠在反叛内部是不够的,以逃避一个字面的美元符号。
无论如何,反引号语法已经过时了;你应该使用现代$(command substitution)
语法,它也有更简单的引用规则。
bash$ var=`echo moo\$bar`
bash$ echo "$var"
moo
bash$ var=$(echo moo\$bar)
bash$ echo "$var"
moo$bar