为像expect这样的程序指定一个通用解释器?

为像expect这样的程序指定一个通用解释器?

我正在编写可在多个操作系统上使用的期望脚本,但问题是

我不能到处使用#!/usr/bin/expect,所以我尝试做

 #!`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之间的区别。

相关内容