web-dev-qa-db-ja.com

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

私はこれを理解しようとしています Dockerエントリーポイントが行うこと

これはDockerfileを作成するときの非常に一般的なパターンのようですが、私のbashスキルには限界があり、特別なbashシンボルであるカンフーをすべて理解していません。

また、「-」、「$!」でグーグル検索するのは難しいetc.これらはbashの世界で何と呼ばれていますか?

要約すると、以下の行は何をしようとしていますか?

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

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
67
Stephen Harris