Scripting
xslt shbang:從命令行使用 xslt
我(愚蠢地?)編寫了幾個中等通用的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