我一直在追踪我在 buildkite 脚本中遇到的一个问题,这是我得到的:
首先,我进入一个docker镜像的shell:
docker run --rm -it --entrypoint bash node:12.21.0
Run Code Online (Sandbox Code Playgroud)
这个 docker 镜像没有任何文本编辑器,所以我通过连接到一个文件来创建我的 shell 脚本:
touch a.sh
chmod +x a.sh
printf '#!/bin/sh\necho ${1:0:1}' >> a.sh
touch b.sh
chmod +x b.sh
printf '#!/bin/bash\necho ${1:0:1}' >> b.sh
Run Code Online (Sandbox Code Playgroud)
我现在运行我的脚本:
./a.sh hello
>./a.sh: 2: ./a.sh: Bad substitution
./b.sh hello
>h
Run Code Online (Sandbox Code Playgroud)
有人可以简单地告诉我这里的问题是什么吗?
这个 AskUbuntu 问题说 bash 和 sh 是不同的 shell,并且在许多系统中 sh 将符号链接到 bash。
这个 docker 镜像具体发生了什么?我怎么会知道?