Shell 脚本未知操作数 alpine

Shell script unknown operand alpine

我 运行 遇到一个问题,如果变量不是 set/set 为空字符串,我的 shell 脚本将无法工作。

为此,我使用 alpine 图片

docker run -dt alpine
docker exec -it <container> sh

这是有问题的代码:

x=""
sh -c "if [ "$x" != "required" ]; then sed; fi"

未设置x时,出现错误:

sh: required: unknown operand

这似乎只是空字符串的问题。如果我设置 x="lkajsdfasl",它会正常工作。

这只是在一个空的 string/not 集合上分解。

由于我的 docker-compose 的设置方式,我只能使用 sh 并且必须使用 sh -c

这是一个引用问题。像这样在命令周围使用单引号

sh -c 'if [ "$x" != "required" ]; then sed; fi'