これは別のpostからの質問です。そのポストからのコメントと回答に基づいて、私は別のものに次のシェバング+のevalを変更:shebang + evalの変更によりperlスクリプトのエラーが発生する
旧新バージョン
#!/bin/sh
eval 'exec perl5 -S $0 ${1+"[email protected]"}'
if 0;
機能しないバージョン
#!/bin/perl
eval 'exec perl5 -S $0 ${1+"[email protected]"}'
if 0;
の作品
#!/bin/perl
を#!/bin/sh
に変更していることに注意してください。私の理解に基づいて、スクリプトはt同じようなスクリプトを実行するためにシェルスクリプトのようにreqされ、eval
が実行され、perl5
が呼び出されます。しかし、実際にこれを実行すると、私は得ました:
/bin/sh: -S: invalid option
このケースでは、スクリプトが失敗した理由を誰でも説明できますか。私は何かを誤解していますか?私は使用していますksh
またこのweb page私は私の新しいバージョンも同様に動作するはずです示唆しているようだ。
ありがとうございます!
サンプル実行を示します。 '$ 1'や' $ @ 'のarg値はありますか?そして、あなたは '#!/ bin/ksh'を試しましたか?がんばろう。 – shellter
この質問は、シェルとperlの不可解な部分と曖昧な部分を探究しています。 – Borodin
@Borodin True(私は実際に '#!/ usr/bin/env perl'を好み、問題はなかったと思います。それにもかかわらず興味深い質問。私は '-S'スイッチを' perl5'のパラメータとして解釈するのはシェルのビジネスではないと考えました。だからなぜ_シェルは文句を言うのですか? – PerlDuck