複数のオペレーティングシステムで使用できるexpectスクリプトを書いていますが、問題は
どこでも使えるわけではない#!/usr/bin/expect
ので、代わりに
#!`which expect`
トップに立ったが失敗した
[sesiv@itseelm-lx4151 ~]$ ./sendcommand
-bash: ./sendcommand: `which: bad interpreter: No such file or directory
これに対する解決策はありますか。
答え1
ほとんどの場合に機能する 1 つのトリック (perl、python、php インタープリター、およびおそらく他のインタープリターの場合):
#!/usr/bin/env expect
env
は常に であると思います/usr/bin/
。今では多くのインタープリタがそのように実行できます。他のハックも以前は存在していましたが、理解できなかったり、移植性があまりなかったりしました。
答え2
私は提案します
#!/bin/sh
expect_path="$(which expect)"
"$expect_path" "$0" "$@"
これがうまくいくことを願っています。bash と sh の違いについてはよくわかりません。