Scripting

vars:下標超出範圍

  • March 7, 2017

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

引用自:https://unix.stackexchange.com/questions/349731