Указываете ли вы универсальный интерпретатор для такой программы, как 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.

Связанный контент