Scripting
vars:下標超出範圍
我有一個 csh 腳本(我知道我知道),在我的腳本中我執行一個 sql 查詢,然後將輸出轉換為一個變數,以便在腳本中的下一個命令中使用。
基本上它看起來像這樣:
set vars = `echo "my sql command"` set numRows = $#vars next command '$vars[1]' .....
我的日誌顯示錯誤
Vars : subscript out of range
有人可以告訴什麼會導致這種情況以及如何解決?
您確定
next command '$vars[1]'
您使用的是實際命令嗎?因為單引號不允許 $vars 被擴展?無論如何,您看到的錯誤
subscript out of range
=> $vars 不包含那麼多元素。這意味著您的第一條語句中有一些錯誤: set vars =echo "my sql command"
$#vars 顯示什麼?
另外,第一條語句最好寫成:set vars = (
echo "my sql command"
)
為了防止在使用的變數不存在時發生此類事件,這是程式碼中前面使用的命令替換的結果,您可以執行此操作。
( 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]"