有人能解释一下这个 shell 脚本的作用吗?(node-14 dockerfile 中的 docker 入口点)

有人能解释一下这个 shell 脚本的作用吗?(node-14 dockerfile 中的 docker 入口点)

我想了解这个脚本的作用。它被定义为入口点为了node-14 docker 镜像。我们遇到了环境变量在新版本中消失的问题,我想知道这是否与此脚本有关(环境变量中有一些特殊字符)。有人能帮我解释一下吗?

#!/bin/sh
set -e

if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ]; then
  set -- node "$@"
fi

exec "$@"

答案1

[ "${1#-}" != "${1}" ]--“第一个参数以破折号开头”

[ -z "$(command -v "${1}")" ]--“无法找到在第一个参数 ${1} 中设置名称的二进制文件”

set -- node "$@"-- “在参数列表的第一个位置插入‘node’”

exec "$@"--“将所有参数作为字符串并执行”

看起来这与环境变量无关。

PS 我认为在第二个代码块(带有“命令”)中内部的双引号应该被转义。

相关内容