我试图了解这个Docker 入口点的作用。
在我看来,这是编写 Dockerfile 时非常常见的模式,但我的 bash 技能有限,而且我不知道所有特殊的 bash 符号功夫。
此外,很难用谷歌搜索“--”、“$!” 等等。这些在 bash 世界中被称为什么?
总而言之,下面的行试图做什么?
if [ "${1#-}" != "$1" ]; then
set -- haproxy "$@"
fi
Run Code Online (Sandbox Code Playgroud)
Ste*_*ris 97
的set
命令(当不设置选项)设置位置参数例如
$ set a b c
$ echo $1
a
$ echo $2
b
$ echo $3
c
Run Code Online (Sandbox Code Playgroud)
该--
是标准的“做以下这作为一个选项不把任何东西”
该"$@"
是所有现有的位置paramters。
所以序列
set -- haproxy "$@"
Run Code Online (Sandbox Code Playgroud)
将这个词haproxy
放在$1
$2
etc前面。
例如
$ echo $1,$2,$3
a,b,c
$ set -- haproxy "$@"
$ echo $1,$2,$3,$4
haproxy,a,b,c
Run Code Online (Sandbox Code Playgroud)