访问参数的数量会传递到docker run命令脚本中

时间:2016-05-20 03:26:58

标签: bash docker dockerfile

我有一个Docker入口点脚本,如下所示:

#!/bin/sh
LABEL=$1
mkdir -p /backup/$LABEL
...

我可以通过$ 1,$ 2等访问以正常bash方式传递的参数,但我还需要知道传入的参数数量。起初我以为我可以这样做:

if [ $# -eq 2 ];
  then

然而,这不起作用。关于如何检索参数数量的任何想法?

TIA, 奥莱

2 个答案:

答案 0 :(得分:1)

怪异。这应该工作。但是,如果您可以阅读位置参数$1$2,那么您可能会对它们进行循环运行:

#!/bin/bash

params="$@"
while param=$1 && [ -n "$param" ]
do
    shift
    ((count += 1))
    echo "here comes $param"
done

echo "All params: ${params[@]}"
echo "We saw $count of them"

答案 1 :(得分:0)

好的 - 实际上没有任何东西可以解决。原因是入口点行需要如下所示:

ENTRYPOINT ["bash", "/run.sh"]
我看起来像这样:

ENTRYPOINT ["/run.sh"]

有关详细信息,请参阅此处: Referencing the first argument passed to the docker entrypoint?