shell 如何在echo中删除空格?

irtuqstp  于 12个月前  发布在  Shell
关注(0)|答案(2)|浏览(182)
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章我该怎么办?
解决方案:
return $(return ${a});
b1=$(echo ${b#});
c1=$a1$b1;
返回$c1;

x8goxv8g

x8goxv8g1#

a的值中必须包含空格(可能b也是)
你可以通过修改变量的值来去掉空格。假设您有bash、ksh或其他POSIX shell

echo ${a% }${b% }

可能会有用${var% }表示,对于${var},从变量值的右侧删除一个空格字符(如果有)。如果出于某种原因,你发现空格在前面,比如'a',那么使用${a# },这意味着从变量值的左边删除一个空格字符。
编辑:kurumi的解决方案(假设bash和POSIX shell可能更好),因为这样一来,空间值出现在行的哪里就无关紧要了。
但是,为什么不把这两个值连接起来,只有一个SQL查询呢?
$ab= ... select 10 + 11 from dual;
你可能需要咨询一下你的Oracle朋友,才能完全正确地做到这一点,但是在SQL数据库(可能还有MS SQL)中,这不会是一个问题。
另外,停止使用反引号,它们从1992年开始就被弃用了(至少)ab=$(cmd)要好得多;- )
编辑:修复了${x% }(右)和${x# }(左)的“边性”。2023-10-16
IHTH

smtd7mpg

smtd7mpg2#

你可以尝试

c="$a$b"
echo ${c// }

或删除每个变量本身的空格

a=${a// } 
b=${b// }

或者你可以叫外部医生

echo $a | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//'

相关问题