為像expect這樣的程式指定一個通用解釋器?

為像expect這樣的程式指定一個通用解釋器?

我正在編寫可在多個作業系統上使用的期望腳本,但問題是

我不能使用#!/usr/bin/expectevreywhere 所以我嘗試這樣做

 #!`which expect`

在頂部但失敗了

[sesiv@itseelm-lx4151 ~]$ ./sendcommand
-bash: ./sendcommand: `which: bad interpreter: No such file or directory

任何解決方案。

答案1

一種最有效的技巧(對於 perl、python、php 解釋器,可能還有其他解釋器):

#!/usr/bin/env expect

我想env總是在/usr/bin/。現在很多解釋器都可以這樣運作。其他的駭客曾經也存在過,但無法理解,或不那麼便攜。

答案2

我建議

#!/bin/sh
expect_path="$(which expect)"
"$expect_path" "$0" "$@"

我希望這能起作用;我不熟悉bash和sh之間的區別。

相關內容