2017-03-03 62 views
2

我有麻煩搞清楚爲什麼我收到的標題定義的錯誤。爲什麼我會得到'(」無與倫比

有一天,我有一個類似的腳本,但具有相同的麻煩`< < '無與倫比然後我發現this這幫助我解決我有應用同一種修復這個問題麻煩我的問題

我塊:。

+95   master_table=$(sqlplus -s <<- EOF 
    +96   ${SQLMSTR} 
    +97   select * from UTILS.PAGE_TO; 
    +98   EOF 
    +99   ) 

我可以得到它,如果工作,我刪除所有空白在EOF之前在線98。任何人都可以幫助我理解我做錯了什麼嗎?

我使用ksh93的

我的「其他」從一個單獨的腳本,工程塊(有關於腳本每一行前的空格):

sqlplus -s <<- EOF 
${SQLMSTR} 
exec utils.change_page('${TEAM}'); 
EOF 
+0

您是否使用製表符縮進? << << - '僅與製表符一起使用,而不是空格。 – codeforester

+0

嗨,@codeforester,我正在使用空格,但是我也嘗試使用'<<#'沒有成功 –

回答

1

變化<<-<<和移位EOF到該行的開頭:

+95   master_table=$(sqlplus -s << EOF 
    +96   ${SQLMSTR} 
    +97   select * from UTILS.PAGE_TO; 
    +98 EOF 
    +99   ) 

我知道它看起來很醜。解決此問題的一種方法是創建一個將SQL語句作爲參數並運行的函數。像這樣:

function run_sqlplus() { 
    sqlplus -s << EOF 
    ${SQLMSTR} 
    [email protected] 
EOF 
} 

    : indented code 
    master_table=$(run_sqlplus 'select * from UTILS.PAGE_TO;') 
+0

嗨,謝謝你的回答。正如我在我的問題中所述,如果我將'EOF'移動到'98'行的開始位置,正如答案中所建議的那樣,我能夠成功運行,但是,我想保持格式一致。我不可能這麼做嗎? –

+0

我剛剛更新瞭如何保持縮進的建議。 – codeforester

+0

謝謝,我在另一個腳本中使用了函數方法,我只是認爲有另一種方式通過使用here-doc –

相關問題