このDockerfileエントリポイントで "set --"は何をしますか?

このDockerfileエントリポイントで

これが何かを理解しようとしています。Dockerエントリポイントは次のことを行います。

これはDockerfileを書くときに非常に一般的なパターンのようですが、私のbash技術は限られており、特別なbash表記法のトリックをすべて知りません。

また、「--」、「$!」などを検索するのも難しいです。 bashの世界ではこれを何と呼びますか?

全体的に、次のコード行は何をしようとしていますか?

if [ "${1#-}" != "$1" ]; then
  set -- haproxy "$@"
fi

ベストアンサー1

このsetコマンド(オプションが設定されていない場合)は、位置引数を設定します。

$ set a b c
$ echo $1
a
$ echo $2
b
$ echo $3
c

これが--「以後は何もオプションとして扱わない」という基準だ

これは"$@"すべて既存の場所パラメータです。

だから注文は

set -- haproxy "$@"

haproxyなどの前にこの単語を入れます。$1 $2

例えば

$ echo $1,$2,$3
a,b,c
$ set -- haproxy "$@"
$ echo $1,$2,$3,$4   
haproxy,a,b,c

おすすめ記事