私は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]"