s#!/bin/ksh
usrid=`sql_login.sh`
if [ "$?" -ne "0" ]; then
echo "sql login failed-Username/Password not available in control file"
exit -1
fi
a=`sqlplus -s ${usrid} <<EOF
set pause off
set heading off
set feedback off
set serveroutput off;
select 10 from dual;
exit;
EOF`
b=`sqlplus -s ${usrid} <<EOF
set pause off
set heading off
set feedback off
select 11 from dual;
exit;
EOF`
echo "Out of sqlplus session";
echo $a$b;
你的输出如10 11?我需要它1011我怎么能得到这个?
溶液:
a1 = $(echo $ {a#});
b1 = $(echo $ {b#});
C1 = $ A1 $ B1;
echo $ c1;
答案 0 :(得分:0)
你可以尝试
c="$a$b"
echo ${c// }
或删除每个变量本身的空格
a=${a// }
b=${b// }
或者你可以打电话给外部人员
echo $a | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'
答案 1 :(得分:0)
a的值必须包含空格(也可能是b)
您可以通过修改变量的值来摆脱空间。 假设你有bash,ksh或其他POSIX shell
echo ${a% }${b% }
可能会奏效。 $ {var%}表示,对于$ {var},从变量值的左边删除一个空格char(如果有一个空格char)。 如果由于某种原因,您发现空间位于前面,如“a”,则使用 $ {a#},表示从变量值的右侧删除空格char。
编辑:kurumi的解决方案(假设bash和POSIX shell可能更好) 因为那时空间值出现在哪一行并不重要。
但为什么不连接这两个值并且只有1个sql查询?
$ AB = ...
select 10 + 11 from dual;
您可能需要咨询oracle朋友才能完全正确,但在SQL Sybase DB(可能还有MS SQL)中,这不会有问题。
另外,停止使用反引号,自1992年以来它们已被弃用(至少) ab = $(cmd)非常好; - )
我希望这会有所帮助。
P.S。因为您似乎是新用户,如果您得到的答案可以帮助您,请记住将其标记为已接受,或者给它一个+(或 - )作为有用的答案