vars:下标超出范围

vars:下标超出范围

我有一个 csh 脚本(我知道我知道),在我的脚本中我运行一个 sql 查询,然后将输出转换为一个变量,以便在脚本中的下一个命令中使用。

本质上它看起来像这样:

set vars = `echo "my sql command"`
set numRows = $#vars
next command '$vars[1]'
.....

我的日志显示错误

Vars : subscript out of range

有人可以告诉这是什么原因造成的以及如何解决吗?

答案1

您确定next command '$vars[1]'这是您正在使用的实际命令吗?因为单引号不允许 $vars 扩展?

无论如何,您看到的错误subscript out of range=> $vars 并不包含那么多元素。这意味着您的第一个语句中有一些错误: set vars = `echo "my sql command"`

$#vars 显示什么?

另外,第一条语句最好写为: set vars = ( `echo "my sql command"` )

答案2

为了防止发生此类事件,当正在使用的变量不存在(这是代码中先前使用的命令替换的结果)时,您可以这样做。

( your_SQL_command > log ) >& /dev/null
if ( $status != 0 || -z log ) then
   echo "Some problem running your SQL command...Bailing out."
   exit 1
endif

set vars = ( "`cat log`" )

# now safe to use the $vars...
your_next_SQL_command "$vars[1]"

相关内容