0

这是我的脚本。

#!/usr/bin/sh


isql -UXx -Pxxxxxx <<!
set nocount on
use xxxx
go
select count(*) from BSC  where bsc='$1'
go
!

exit

我正在执行这个脚本:

temp2.sh 0000

输出为 0。但是当我手动执行查询时,输出为 1,这是正确的。这里的问题是命令行参数 $1 没有传递给查询。

我怎么能做到这一点?我已经尝试了所有这些可能性:

bsc='$1'- output is 0
bsc="$1"- output is 0
bsc=`$1`- Syntax error
bsc="'$1'"- output is 0

我使用的是solaris unix,数据库是sybase。

4

2 回答 2

0

问题已解决:

而不是将脚本称为

temp2.sh 0000 

我称之为:

temp2.sh "0000" 
于 2012-08-07T10:32:25.827 回答
0

我认为这里的问题是你的查询中的单引号被shell解释了,所以

select count(*) from BSC  where bsc='$1'

被解释为

select count(*) from BSC  where bsc=$1

作为文字字符串。

我没有任何可用的东西来测试这个,但你可以尝试用

select count(*) from BSC  where bsc="'$1'"

我认为(我再次强调我现在没有任何可测试的东西)双引号应该使单引号打印为字符,因此它将被解释为

select count(*) from BSC  where bsc='0000'

给定您提供的命令行输入。

于 2012-08-07T05:48:21.847 回答