Fish Shell中如何为read命令设置默认输入值?
实现fish shell中read命令的默认输入
问题场景
我原本写了这样一段fish脚本:
read -p 'set_color green; echo -n "$prompt Do you like to succeed? [Y/n]: "; set_color normal' -l confirm switch $confirm case Y y '' command case N n return 1
我以为''能让按下Enter键时默认视为“是”(Yes),但实际没效果,而且read命令的文档里也没提到默认值设置方法,请问该怎么实现让read接受默认输入?
解决方法
fish的read命令本身没有内置的默认值参数,但可以通过读取输入后手动判断并赋值默认值来实现需求:
# 读取用户输入 read -p 'set_color green; echo -n "$prompt Do you like to succeed? [Y/n]: "; set_color normal' -l confirm # 如果用户直接按Enter(变量为空),设置默认值为Y if test -z "$confirm" set confirm Y end # 后续的switch判断 switch $confirm case Y y # 执行你需要的命令 echo "执行确认操作" case N n return 1 end
核心思路是:先获取用户输入,再检查输入是否为空,为空则将变量设为你想要的默认值,之后再进行逻辑判断。这样用户直接按Enter时,就会自动使用默认的"Yes"逻辑。
内容的提问来源于stack exchange,提问作者Matthias Schuster
相关产品推荐
相关产品推荐

