我想了解这个Docker入口点的作用。
在我看来,这是编写Dockerfile时非常常见的模式,但是我的bash技能有限,我不知道所有特殊的bash符号功夫。
另外,很难用Google搜索“-”,“ $!”。等等。在bash世界中这些叫做什么?
总而言之,波纹管试图做什么?
if [ "${1#-}" != "$1" ]; then
set -- haproxy "$@"
fi
我想了解这个Docker入口点的作用。
在我看来,这是编写Dockerfile时非常常见的模式,但是我的bash技能有限,我不知道所有特殊的bash符号功夫。
另外,很难用Google搜索“-”,“ $!”。等等。在bash世界中这些叫做什么?
总而言之,波纹管试图做什么?
if [ "${1#-}" != "$1" ]; then
set -- haproxy "$@"
fi
Answers:
该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
set -- -z 2 3 4和set -z 2 3 4。该--停止-a解释为一个选项之中。在这种情况下,这不是必需的,但是--当您确定要遵循的内容时,养成使用习惯是“好的做法” :-)
set -- $arg1 $arg2将允许源脚本读取参数,否则,只有Bash支持将参数直接传递到源脚本(这很棘手)。