我怎样才能使用read
某些东西作为标准响应,而用户可以更改它?(默认答案)
答案1
bash 版本 4+
你会这样写:
read -p "enter a value: " -i default -e answer
echo "you answered: $answer"
-i default
指定默认答案。-e
启用 的交互(编辑)模式read
。如果没有此选项,默认答案将不起作用。
bash 版本 < 4 (macos 有 bash 3.x)
所以,不能编辑使用 bash 3.2 的默认值。您可以这样做:
default="the default value"
read -p "your answer [default=$default] " answer
: ${answer:=$default}
echo "you answered: $answer"
如果用户未输入任何内容(空字符串),则使用默认值
答案2
这是一个 BASH shell 内置命令。
从标准输入读取一行,将第一个单词分配给第一个名字,将第二个单词分配给第二个名字,依此类推,将剩余的单词及其中间的分隔符分配给最后一个名字。
如果从标准输入读取的单词数量少于名称数量,则剩余的名称将被分配空值。
IFS 变量值中的字符用于将行拆分为单词。
反斜杠字符“\”可用于删除读取的下一个字符和行继续的任何特殊含义。
如果没有提供名称,则将读取的行分配给变量 REPLY。返回代码为零,除非遇到文件结尾或读取超时。
例子
#!/bin/bash
read var_year
echo "The year is: $var_year"
echo -n "Enter your name and press [ENTER]: "
read var_name
echo "Your name is: $var_name"