2
位置パラメータ付きのbash -c
通常、$0スクリプト内では、スクリプトの名前、またはそれが呼び出されたもの(パスを含む)に設定されます。ただし、オプションで使用bashする場合は、コマンド文字列の後に渡される引数の最初に設定されます。-c$0 bash -c 'echo $0 ' foo bar # foo 実際には、位置パラメータはシフトされているように見えますが、が含まれてい$0ます。ただしshift、コマンド文字列では$0(通常どおり)影響を受けません。 bash -c 'echo $0; shift; echo $0 ' foo bar # foo # foo コマンド文字列のこの奇妙な動作はなぜですか?このような奇妙な動作を実装する背後にある理由、理論的根拠を探していることに注意してください。 そのようなコマンド文字列は$0通常定義されたパラメータを必要としないと推測できるため、経済のために通常の引数にも使用されます。ただし、その場合、の動作shiftは奇妙です。別の可能性は$0、プログラムの動作を定義するために使用される(bashas shまたはvimas と呼ばれるla vi)が、$0ここではコマンド文字列でのみ表示され、その中で呼び出されるプログラムでは表示されないためです。の他の用途は考えられない$0ので、これを説明するのに途方に暮れています。
15
bash