Mac终端可运行的非交互式Bash命令在Docker终端执行失败求助
问题解决:Docker终端执行脚本出现
read: Illegal option -s错误 问题根源
你的4icli脚本里使用了Bash专属的read -s选项(用于隐藏输入内容),但Docker容器默认的/bin/sh是Dash(轻量级shell,不支持Bash的部分扩展语法),而Mac本地的/bin/sh实际是Bash的软链接,所以本地能正常运行,Docker里报错。
解决方案
方案1:修改4icli脚本的执行shell
找到4icli脚本的第一行(shebang),把:
#!/bin/sh
改成:
#!/bin/bash
这样脚本会强制用Bash执行,就能支持read -s了。
方案2:用Bash直接运行命令和脚本
如果没法修改4icli,可以在Docker终端里用Bash来执行整个命令链:
bash -c '{ echo "ar"; sleep 1; echo "br"; } | bash ./4icli configure'
方案3:给Docker镜像安装Bash(如果镜像默认没有)
如果你的Docker镜像里没有Bash,先安装它(以Debian/Ubuntu系镜像为例):
apt-get update && apt-get install -y bash
验证
执行修改后的命令后,应该能和Mac本地一样走到凭证验证步骤,不会再出现read选项错误。
内容的提问来源于stack exchange,提问作者punyakoti
相关产品推荐
相关产品推荐

