Ubuntu 22.04中Bash脚本read -s选项报错问题排查
问题原因及解决方法
出现 read: Illegal option -s 错误的核心原因是脚本实际运行的shell不支持-s选项。Ubuntu 22.04中默认的sh指向dash,而dash的read命令没有-s(静默输入)这个参数;但你在终端直接执行命令时用的是bash,bash的read支持-s,所以能正常工作。
可能的触发场景
- 你用
sh 脚本名.sh的方式运行脚本,这会忽略脚本开头的#!/bin/bashshebang,强制使用dash执行。 - 虽然脚本有
#!/bin/bash,但可能存在权限问题导致系统没有用指定的shell执行(不过这种情况较少见)。
解决方法
- 正确执行脚本:先给脚本添加可执行权限,然后直接运行:
这样系统会读取chmod +x your_script.sh ./your_script.sh#!/bin/bash这一行,用bash来执行脚本。 - 显式指定bash运行:如果不想加权限,直接用
bash命令运行:bash your_script.sh - 避免用sh运行:不要再用
sh your_script.sh的方式,因为这会调用不兼容的dash。
内容的提问来源于stack exchange,提问作者sctx
相关产品推荐
相关产品推荐

