Chinaunix

标题: 谁能帮我改进一下这个小SHELL [打印本页]

作者: bigacer    时间: 2010-06-22 10:55
标题: 谁能帮我改进一下这个小SHELL
cat a.sh

#!/bin/sh

request_id=`{ sqlplus -s 'apps/appsdev'<<EOF
  set pages 0 feed off  
  select count(1) from dba_tablespaces;
EOF
}`
echo $request_id

sh a.sh

123

但是我想改进一下我的脚本,就是多增加一个变量输入,类似于下面红字部分


#!/bin/sh

request_id=`{ sqlplus -s 'apps/appsdev'<<EOF
  set pages 0 feed off  
  select count(1) from dba_tablespaces where tablespace_name = '$value';
EOF
}`
echo $request_id

我想查询一下我的SYSTEM的表空间的数量,但是返回时0,这个是错误的,我估计是红色部分写的有问题
sh a.sh 'SYSTEM'
0
作者: bbgg1983    时间: 2010-06-22 11:04
貌似这个地方有问题 '$value'
作者: bigacer    时间: 2010-06-22 11:06
貌似这个地方有问题 '$value'
bbgg1983 发表于 2010-06-22 11:04



   
我感觉也是这个地方出现了问题,但是不知道怎么改。
作者: 昭襄王    时间: 2010-06-22 11:07
这意思?
  1. request_id=`{ sqlplus -s 'apps/appsdev'<<EOF
  2.   set pages 0 feed off  
  3.   select count(1) from dba_tablespaces where tablespace_name = $1;
  4. EOF
  5. }`
  6. echo $request_id
复制代码

作者: bbgg1983    时间: 2010-06-22 11:16
改成'\$value'
作者: Shell_HAT    时间: 2010-06-22 11:17
你忘记给变量value赋值了
#!/bin/sh
value=$1
request_id=`{ sqlplus -s 'apps/appsdev'<<EOF
  set pages 0 feed off  
  select count(1) from dba_tablespaces where tablespace_name = '$value';
EOF
}`
echo $request_id

作者: expert1    时间: 2010-06-22 11:25
gaoshou
作者: bbgg1983    时间: 2010-06-22 11:25
回复 6# Shell_HAT


   
    就是这个原因,我刚测试的时候自己加了,忘了
作者: leoflash    时间: 2010-06-22 11:30
{:3_198:}{:3_198:}{:3_198:}
作者: iori809    时间: 2010-06-22 11:51
回复 1# bigacer


    [oracle@test7: ~]$sh sh1.sh  "SYSTEM"
1
[oracle@test7: ~]$more sh1.sh

#!/bin/bash
value=`sqlplus -S /nolog <<EOF
set heading off feedback off pagesize 0 verify off echo off numwidth 4
conn / as sysdba
select count(*) from dba_tablespaces where  tablespace_name = '$1' ;
EOF
`
echo $value




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2