我想了解这个脚本的作用。它被定义为入口点为了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 我认为在第二个代码块(带有“命令”)中内部的双引号应该被转义。