Shell-Script

編寫一個有序的 zsh 腳本

  • July 3, 2021

我正在使用 Big Sur,我正在嘗試編寫一個腳本來執行一個包(該包是 XSPEC,一個來自 NASA 的光譜擬合包),然後執行在該包中執行的命令。我開始XSPEC打開包,然後我想執行data 1:1 /Users/me/Desktop/Drive/my\ data/spectrum2.pha我的問題是,如果我只是把兩行用輸入隔開,第二行不會執行,因為我假設第一行不會終止,直到我退出了包裹。每當 XSPEC 完成啟動時,它就會列印XSPEC version: 12.11.1 Build Date/Time: Thu Jul 1 04:09:17 2021 XSPEC12>(在三個單獨的行中列印)。有沒有辦法製作一個 if 語句,一旦列印了前面的行,就會進入下一步?

來自XSPEC 文件

XSPEC 是一個命令驅動的互動式程序。XSPEC12>每當需要輸入時,您都會看到提示。

這意味著,XSPEC 程序並不打算按照您嘗試的方式執行。另請注意該段的其餘部分:

使用箭頭鍵可以使用命令呼叫和內聯編輯。XSPEC 使用 Tcl 作為其使用者界面,提供循環、條件、文件 I/O 等。有關 Tcl 語法的更多詳細資訊,請參閱附錄 A 和其中的連結。

特別是 XSPEC 使用 Tcl 的事實。Tcl 本身就是一種腳本語言。文件中的措辭表明您可以編寫和使用 Tcl 腳本來指導/控制 XSPEC 程序及其操作,而不是嘗試使用zsh非互動方式執行 XSPEC。相反,編寫一個 Tcl 腳本來載入數據集、進行處理並輸出結果。

您需要閱讀 XSPEC 手冊以獲取有關如何執行此操作的更多資訊。該手冊還提供了有關如何學習/使用 Tcl 來完成此任務的連結和資訊。

編輯添加:我剛剛還想到整data ...一個 XSPEC 命令(在 Tcl 中)。因此,它根本不是命令zsh。因此,無論如何,您嘗試這樣做的方式是完全錯誤的。您可以通過多種方式將 XSPECdata ...命令載入/執行到 XSPEC,包括外部腳本文件或 shell 重定向。同樣,請閱讀 XSPEC 文件以了解如何執行此操作。

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