小编dwj*_*ton的帖子

为什么 bash shebang 工作,但 sh shebang 不起作用,用于字符串替换

我一直在追踪我在 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 镜像具体发生了什么?我怎么会知道?

bash shell-script

5
推荐指数
2
解决办法
1658
查看次数

标签 统计

bash ×1

shell-script ×1