我有一个 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]"