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

関連情報