Shell

獲取此處文件的路徑作為文件

  • September 26, 2021

XML我有一個程序,它從路徑被指定為參數的文件中獲取輸入。我希望我的 shell 腳本是自包含的,所以這裡的文件似乎是正確的方法。不幸的是,這個程序不接受來自 的輸入STDIN,所以管道不起作用。

我讀過 here-docs 被實現為 中的文件/tmp,因此我認為可能有一種方法。

有沒有辦法在我的 shell 腳本中內聯我的 XML 文件,並獲得這個 xml 解析器可以使用的路徑?

如果您的 shell 支持程序替換(bash、zsh、ksh88、ksh93),您可以使用:

your_command <( cat <<EOF
contents of the
xml file
EOF
)

整個<(...)部分將cat <<EOF命令的輸出連接到 FIFO,然後將其作為參數傳遞給目前命令。

但我認為更便攜的方式是,只需創建一個包含內容的臨時文件,然後將其刪除。

解釋器可以很好地從被解釋的源中讀取“這裡”文件,並將其輸入到獲取輸入的命令中(無論如何,這就是我要做的,以避免與臨時文件混在一起的麻煩)。在任何情況下,無論使用何種機制似乎都沒有記錄在案,因此可以隨時更改。特別是,不能保證您獲得的不同外殼,例如,/bin/sh將以相同的方式工作。

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