/ /「set —” $ progname”” $ @””とはシェルスクリプトの意味ですか? -Linux、シェル

"$ progname" "$ @" "はシェルスクリプトの意味ですか? - linux、shell

現在、configure.acビルドスクリプトからこの行を読み取ります。 Googleで回答を検索しましたが、見つかりませんでした。

私はそれがシェルスクリプトであると仮定しますが、これが何を意味するのか、特に --

set -- "$progname" "$@"

回答:

回答№1は2

-- は、bash組み込みコマンドであり、多くのUNIXコマンドがコマンドオプションの終了を示すために使用するものです。したがって、次のようなものがある場合:

grep -- -v file

その -v grepオプションとして解釈されることはありませんが、パラメータ(したがって、 -v)。

$@ スクリプトに渡されるすべてのパラメーターのリストです(これは set コマンドはその一部です)。

-- スクリプトの一部として渡されたオプションが、次のオプションとして解釈されないことを保証します。 set、ただし、コマンドのオプションとして $progname 変数。


回答№2の場合は0

から help set

  --  Assign any remaining arguments to the positional parameters.
If there are no remaining arguments, the positional parameters
are unset.

の理由 -- たとえそうであっても "$progname" または "$@" ダッシュを含む場合、コマンドラインオプションとして解釈されません。

set に保存されている位置パラメータを変更します $@。そのため、この場合、追加します "$progname" スクリプトが受け取る位置パラメータの先頭まで。