我想了解这个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支持将参数直接传递到源脚本(这很棘手)。