You need to enable JavaScript to run this app. shell脚本运行报错read: Illegal option -s该如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

shell脚本运行报错read: Illegal option -s该如何解决?

错误根因

read -s是Bash对read命令的扩展参数,作用是关闭输入回显,适配密码输入的场景。但你脚本的首行是#!/bin/sh,绝大多数Linux发行版中/bin/sh默认指向符合POSIX标准的轻量Shell(比如Debian/Ubuntu系默认是dash),这类Shell的read命令没有实现-s参数,运行时就会报非法选项错误。

解决方案

方案1:切换脚本解释器为Bash(最简单)

直接把脚本第一行的#!/bin/sh改成#!/bin/bash即可,修改后的完整脚本如下:

#!/bin/bash
echo "enter ur password"
read -s PASS
echo -e "\nur password is $PASS"

补充:加-e "\n"是为了输完密码后自动换行,避免后续输出和密码提示行挤在一起,优化使用体验

方案2:兼容POSIX标准Shell(无需依赖Bash)

如果你的脚本需要在没有Bash的环境运行,可以用stty命令手动控制回显开关,实现和-s完全一致的效果,脚本如下:

#!/bin/sh
echo "enter ur password"
stty -echo # 关闭终端回显
read PASS
stty echo # 重新开启终端回显
echo "\nur password is $PASS"

注意:一定要保证stty echo被执行,哪怕脚本中途异常退出也建议补充陷阱处理逻辑,避免终端后续输入一直不回显

内容的提问来源于stack exchange,提问作者CrazyJhq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 20:09:03