Scripting

xslt shbang:從命令行使用 xslt

  • November 1, 2017

我(愚蠢地?)編寫了幾個中等通用的xslt 腳本。

我很想把這些變成執行檔,從標准或類似文件中讀取 xml 文件。

使用其他語言執行此操作的方法是使用shbang

有沒有一種簡單/標準的方法可以用 xsltproc 和朋友來做到這一點?當然,我可以破解一個圍繞 xsltproc 的包裝器,它會拉出第一條註釋行……但如果有一些接近標準的東西,這會更好用。

您可以使用通用的binfmt-misc核心模組來處理執行執行檔時使用的解釋器。它通常用於允許您執行外部體系結構文件而無需使用qemu或作為前綴wine,但可用於辨識文件頭中的任何魔術字元序列,甚至是給定的文件副檔名,如*.xslt. 請參閱核心文件

例如,如果您有一個demo.xslt以字元開頭的文件

<xsl:stylesheet version=...

您可以要求模組辨識<xsl:stylesheet文件中偏移量 0 處的字元串並/usr/bin/xsltproc以 root 身份執行

colon=$(printf '\\x%02x' \':) # \x3a
echo ":myxsltscript:M::<xsl${colon}stylesheet::/usr/bin/xsltproc:" >/etc/binfmt.d/myxslt.conf 
cat /etc/binfmt.d/myxslt.conf >/proc/sys/fs/binfmt_misc/register

/etc除非您希望在重新啟動時保留該設置,否則您不需要通過該文件。如果您沒有該/proc文件,則需要先掛載它:

mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

現在,如果您chmod +x demo.xslt可以demo.xslt使用任何 args 執行,它將使用作為額外的第一個參數提供xsltproc的文件名執行。demo.xslt

要撤消設置,請使用

echo -1 >/proc/sys/fs/binfmt_misc/myxsltscript

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