我想在Gnuplot的if塊內執行shell命令。我嘗試了以下方法:
datatype = 'full'.
if ( datatype eq 'full' ) {
# 運行 shell 命令
!echo 'full' !
} else {
# 運行不同的shell命令
!echo 'not full' !
}
然而,這給了我一個錯誤 "filename.plt" line xx: invalid command
FYI,我已經知道用!echo代替,我可以用print來做同樣的事情。這不是問題的關鍵。我想在if-block中使用帶有符號!的shell命令。如果有任何幫助,我們將不勝感激。
uj5u.com熱心網友回復:
@choroba 已經給出了正確的解決方案:使用system("command")函式而不是!command。
至于為什么要這樣做,簡單地說:
(1) 只有當!運算子是gnuplot輸入行的第一個符號時,它才被解釋為表示一個shell命令。否則,它將被解釋為一個邏輯上的NOT。
(2) Gnuplot括號內的子句{ lots of commands }在內部被視為一個單一的長輸入行。 這是一個隨時間變化的實施細節。 最安全的一般準則是,括號內的條款不應包含任何被記錄為作用于或影響單行輸入的語法。這包括@宏替換、單行if陳述句,以及你發現的!運算子。
(1 2) 因此,括號內的!不會被看作是第一個標記,而是被解釋為一個邏輯的NOT運算子。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314475.html
標籤:
